From fb3f7aa747d4d196abd3963ef1cbdfae910551a5 Mon Sep 17 00:00:00 2001 From: Numerigraphe - Lionel Sausin Date: Tue, 10 Jan 2012 13:35:59 +0100 Subject: [PATCH 001/349] [IMP] delivery: move picking's net weight to extended view bzr revid: ls@numerigraphe.fr-20120110123559-1llywc42k606hryj --- addons/delivery/delivery_view.xml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/addons/delivery/delivery_view.xml b/addons/delivery/delivery_view.xml index c46253777d2..47ed9d6d274 100644 --- a/addons/delivery/delivery_view.xml +++ b/addons/delivery/delivery_view.xml @@ -194,7 +194,7 @@ - + - + - + @@ -245,7 +245,7 @@ - + @@ -258,7 +258,7 @@ - + @@ -271,7 +271,7 @@ - + From 32781b0268a8b3583869cd14809e466568ee2a7f Mon Sep 17 00:00:00 2001 From: Numerigraphe - Lionel Sausin Date: Mon, 16 Jan 2012 11:34:06 +0100 Subject: [PATCH 002/349] [FIX] typo in XML file bzr revid: ls@numerigraphe.fr-20120116103406-gwx3w8zlnrnvlyyr --- addons/delivery/delivery_view.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/addons/delivery/delivery_view.xml b/addons/delivery/delivery_view.xml index 47ed9d6d274..6c9e8c85cdb 100644 --- a/addons/delivery/delivery_view.xml +++ b/addons/delivery/delivery_view.xml @@ -194,7 +194,7 @@ - @@ -207,7 +207,7 @@ - From 438cde1f2f9b6204a0cb71338eacc7dfa1fab4e9 Mon Sep 17 00:00:00 2001 From: "nicolas.bessi@camptocamp.com" <> Date: Wed, 8 Feb 2012 11:37:15 +0100 Subject: [PATCH 003/349] [FIX] l10n_ch bvr report to follow last patches of report_webkit addons bzr revid: nicolas.bessi@camptocamp.com-20120208103715-gk6upkf3b47av9h1 --- addons/l10n_ch/report/report_webkit_html.py | 154 +++++++------------- 1 file changed, 51 insertions(+), 103 deletions(-) diff --git a/addons/l10n_ch/report/report_webkit_html.py b/addons/l10n_ch/report/report_webkit_html.py index e6f7239c4e4..72158361da7 100644 --- a/addons/l10n_ch/report/report_webkit_html.py +++ b/addons/l10n_ch/report/report_webkit_html.py @@ -20,22 +20,31 @@ ############################################################################## import time -from report import report_sxw -from report_webkit import webkit_report -from report_webkit import report_helper -from osv import osv -from tools import mod10r import sys import os import re + +from mako.template import Template +from mako.lookup import TemplateLookup +from mako import exceptions + + +from report import report_sxw +from report_webkit import webkit_report +from report_webkit import report_helper + +from osv import osv +from osv.osv import except_osv + +from tools import mod10r +from tools.translate import _ +from tools.config import config + import wizard import addons import pooler -from tools.config import config -from mako.template import Template -from mako import exceptions -from tools.translate import _ -from osv.osv import except_osv + + class l10n_ch_report_webkit_html(report_sxw.rml_parse): @@ -143,53 +152,26 @@ class l10n_ch_report_webkit_html(report_sxw.rml_parse): 'digits!\nPlease check your company ' 'information for the invoice:\n%s') %(invoice_name))) return '' + +def mako_template(text): + """Build a Mako template. + + This template uses UTF-8 encoding + """ + tmp_lookup = TemplateLookup() #we need it in order to allow inclusion and inheritance + return Template(text, input_encoding='utf-8', output_encoding='utf-8', lookup=tmp_lookup) class BVRWebKitParser(webkit_report.WebKitParser): - def setLang(self, lang): - if not lang: - lang = 'en_US' - self.localcontext['lang'] = lang - - def formatLang(self, value, digits=None, date=False, date_time=False, grouping=True, monetary=False): - """format using the know cursor, language from localcontext""" - if digits is None: - digits = self.parser_instance.get_digits(value) - if isinstance(value, (str, unicode)) and not value: - return '' - pool_lang = self.pool.get('res.lang') - lang = self.localcontext['lang'] - - lang_ids = pool_lang.search(self.parser_instance.cr, self.parser_instance.uid, [('code','=',lang)])[0] - lang_obj = pool_lang.browse(self.parser_instance.cr, self.parser_instance.uid, lang_ids) - - if date or date_time: - if not str(value): - return '' - - date_format = lang_obj.date_format - parse_format = '%Y-%m-%d' - if date_time: - value=value.split('.')[0] - date_format = date_format + " " + lang_obj.time_format - parse_format = '%Y-%m-%d %H:%M:%S' - if not isinstance(value, time.struct_time): - return time.strftime(date_format, time.strptime(value, parse_format)) - - else: - date = datetime(*value.timetuple()[:6]) - return date.strftime(date_format) - - return lang_obj.format('%.' + str(digits) + 'f', value, grouping=grouping, monetary=monetary) - def create_single_pdf(self, cursor, uid, ids, data, report_xml, context=None): """generate the PDF""" - self.parser_instance = self.parser( - cursor, + context = context or {} + if report_xml.report_type != 'webkit': + return super(WebKitParser,self).create_single_pdf(cursor, uid, ids, data, report_xml, context=context) + self.parser_instance = self.parser(cursor, uid, self.name2, - context=context - ) + context=context) self.pool = pooler.get_pool(cursor.dbname) objs = self.getObjects(cursor, uid, ids, context) self.parser_instance.set_context(objs, data, ids, report_xml.report_type) @@ -201,7 +183,7 @@ class BVRWebKitParser(webkit_report.WebKitParser): if not template and report_xml.report_webkit_data : template = report_xml.report_webkit_data if not template : - raise except_osv(_('Webkit Report template not found !'), _('')) + raise except_osv(_('Error'),_('Webkit Report template not found !')) header = report_xml.webkit_header.html footer = report_xml.webkit_header.footer_html if not header and report_xml.header: @@ -210,43 +192,19 @@ class BVRWebKitParser(webkit_report.WebKitParser): _('Please set a header in company settings') ) if not report_xml.header : - #I know it could be cleaner ... - header = u""" - - - - - - - -""" - self.parser_instance.localcontext.update({'setLang':self.setLang}) - self.parser_instance.localcontext.update({'formatLang':self.formatLang}) + header = '' + default_head = addons.get_module_resource('report_webkit', 'default_header.html') + with open(default_head,'r') as f: + header = f.read() css = report_xml.webkit_header.css if not css : css = '' user = self.pool.get('res.users').browse(cursor, uid, uid) company = user.company_id - parse_template = template - #default_filters=['unicode', 'entity'] can be used to set global filter - body_mako_tpl = Template(parse_template ,input_encoding='utf-8', output_encoding='utf-8') + body_mako_tpl = mako_template(template) #BVR specific bvr_path = addons.get_module_resource(os.path.join('l10n_ch','report','bvr.mako')) - body_bvr_tpl = Template(file(bvr_path).read(), input_encoding='utf-8', output_encoding='utf-8') - + body_bvr_tpl = mako_template(file(bvr_path).read()) helper = report_helper.WebKitHelper(cursor, uid, report_xml.id, context) ##BVR Specific htmls = [] @@ -254,58 +212,48 @@ class BVRWebKitParser(webkit_report.WebKitParser): self.parser_instance.localcontext['objects'] = [obj] if not company.bvr_only: try: - html = body_mako_tpl.render( - helper=helper, + html = body_mako_tpl.render(helper=helper, css=css, _=self.translate_call, - **self.parser_instance.localcontext - ) + **self.parser_instance.localcontext) except Exception, e: raise Exception(exceptions.text_error_template().render()) htmls.append(html) if not company.invoice_only: try: - bvr = body_bvr_tpl.render( - helper=helper, - css=css, - _=self.translate_call, - **self.parser_instance.localcontext - ) + bvr = body_bvr_tpl.render(helper=helper, + css=css, + _=self.translate_call, + **self.parser_instance.localcontext) except Exception, e: raise Exception(exceptions.text_error_template().render()) htmls.append(bvr) head_mako_tpl = Template(header, input_encoding='utf-8', output_encoding='utf-8') try: - head = head_mako_tpl.render( - helper=helper, + head = head_mako_tpl.render(helper=helper, css=css, _debug=False, _=self.translate_call, - **self.parser_instance.localcontext - ) + **self.parser_instance.localcontext) except Exception, e: raise Exception(exceptions.text_error_template().render()) foot = False if footer and company.invoice_only : foot_mako_tpl = Template(footer, input_encoding='utf-8', output_encoding='utf-8') try: - foot = foot_mako_tpl.render( - helper=helper, + foot = foot_mako_tpl.render(helper=helper, css=css, _=self.translate_call, - **self.parser_instance.localcontext - ) + **self.parser_instance.localcontext) except Exception, e: raise Exception(exceptions.text_error_template().render()) if report_xml.webkit_debug : try: - deb = head_mako_tpl.render( - helper=helper, + deb = head_mako_tpl.render(helper=helper, css=css, _debug=html, _=self.translate_call, - **self.parser_instance.localcontext - ) + **self.parser_instance.localcontext) except Exception, e: raise Exception(exceptions.text_error_template().render()) return (deb, 'html') From 02b41a75ceb5df2ca4227de5839ebd46da0e5462 Mon Sep 17 00:00:00 2001 From: Yury Tello Date: Sun, 19 Feb 2012 14:10:02 -0500 Subject: [PATCH 004/349] [ADD] l10n_cl bzr revid: ytello@cubicerp.com-20120219191002-6yid2f812r4ypg05 --- addons/l10n_cl/__init__.py | 32 ++++ addons/l10n_cl/__openerp__.py | 51 ++++++ addons/l10n_cl/account_tax.xml | 34 ++++ addons/l10n_cl/account_tax_code.xml | 94 ++++++++++ addons/l10n_cl/i18n/es.po | 72 ++++++++ addons/l10n_cl/i18n/es_CL.po | 53 ++++++ addons/l10n_cl/i18n/l10n_cl.pot | 35 ++++ addons/l10n_cl/l10n_cl_chart.xml | 256 ++++++++++++++++++++++++++++ addons/l10n_cl/l10n_cl_wizard.xml | 15 ++ 9 files changed, 642 insertions(+) create mode 100644 addons/l10n_cl/__init__.py create mode 100644 addons/l10n_cl/__openerp__.py create mode 100644 addons/l10n_cl/account_tax.xml create mode 100644 addons/l10n_cl/account_tax_code.xml create mode 100644 addons/l10n_cl/i18n/es.po create mode 100644 addons/l10n_cl/i18n/es_CL.po create mode 100644 addons/l10n_cl/i18n/l10n_cl.pot create mode 100644 addons/l10n_cl/l10n_cl_chart.xml create mode 100644 addons/l10n_cl/l10n_cl_wizard.xml diff --git a/addons/l10n_cl/__init__.py b/addons/l10n_cl/__init__.py new file mode 100644 index 00000000000..92da5dbf966 --- /dev/null +++ b/addons/l10n_cl/__init__.py @@ -0,0 +1,32 @@ +# -*- encoding: utf-8 -*- +############################################################################## +# +# OpenERP, Open Source Management Solution +# Copyright (c) 2011 Cubic ERP - Teradata SAC. (http://cubicerp.com). +# +# WARNING: This program as such is intended to be used by professional +# programmers who take the whole responsability of assessing all potential +# consequences resulting from its eventual inadequacies and bugs +# End users who are looking for a ready-to-use solution with commercial +# garantees and support are strongly adviced to contract a Free Software +# Service Company +# +# 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 2 +# 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, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# +############################################################################## + + + +# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/addons/l10n_cl/__openerp__.py b/addons/l10n_cl/__openerp__.py new file mode 100644 index 00000000000..249bdb3ae48 --- /dev/null +++ b/addons/l10n_cl/__openerp__.py @@ -0,0 +1,51 @@ +# -*- encoding: utf-8 -*- +############################################################################## +# +# OpenERP, Open Source Management Solution +# Copyright (C) 2011 Cubic ERP - Teradata SAC (). +# +# 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": "Argentina Localization Chart Account", + "version": "1.0", + "description": """ +Chilean accounting chart and tax localization. + +Plan contable chileno e impuestos de acuerdo a disposiciones vigentes + + """, + "author": "Cubic ERP", + "website": "http://cubicERP.com", + "category": "Localization/Account Charts", + "depends": [ + "account_chart", + ], + "data":[ + "account_tax_code.xml", + "l10n_cl_chart.xml", + "account_tax.xml", + "l10n_cl_wizard.xml", + ], + "demo_xml": [ + ], + "update_xml": [ + ], + "active": False, + "installable": True, + "certificate" : "", + 'images': ['images/config_chart_l10n_cl.jpeg','images/l10n_cl_chart.jpeg'], +} +# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/addons/l10n_cl/account_tax.xml b/addons/l10n_cl/account_tax.xml new file mode 100644 index 00000000000..1db0d2637f4 --- /dev/null +++ b/addons/l10n_cl/account_tax.xml @@ -0,0 +1,34 @@ + + + + + + + IVA 19% Venta + 0.190000 + percent + sale + + + + + + + + + + + IVA 19% Compra + 0.190000 + percent + purchase + + + + + + + + + + diff --git a/addons/l10n_cl/account_tax_code.xml b/addons/l10n_cl/account_tax_code.xml new file mode 100644 index 00000000000..95c91b60d78 --- /dev/null +++ b/addons/l10n_cl/account_tax_code.xml @@ -0,0 +1,94 @@ + + + + + + Chile Impuestos + + + Base Imponible + + + + Base Imponible - Ventas + + + + Ventas Gravadas con IVA + + + + Ventas NO Gravadas (Exoneradas) + + + + Ventas Gravadas Fuera de Ámbito + + + + Base Imponible - Compras + + + + Compras Gravadas con IVA + + + + Compras NO Gravadas (Exoneradas) + + + + Compras Gravadas Fuera de Ámbito + + + + + Impuesto General a las Ventas (IVA) Total a Pagar + + + + Impuesto Pagado + + + + Impuesto Pagado IVA + + -1 + + + Impuesto Pagado de Exonerados al IVA + + -1 + + + Impuesto Pagado Fuera de Ámbito + + -1 + + + Impuesto Cobrado + + + + Impuesto Cobrado IVA + + + + Impuesto Cobrado de Exonerados al IVA + + + + Impuesto Cobrado Fuera de Ámbito + + + + + Impuestos Directos a Pagar + + + + Impuesto a la Renta Primera Categoría a Pagar + + + + diff --git a/addons/l10n_cl/i18n/es.po b/addons/l10n_cl/i18n/es.po new file mode 100644 index 00000000000..f8b17197008 --- /dev/null +++ b/addons/l10n_cl/i18n/es.po @@ -0,0 +1,72 @@ +# Spanish translation for openobject-addons +# Copyright (c) 2010 Rosetta Contributors and Canonical Ltd 2010 +# This file is distributed under the same license as the openobject-addons package. +# FIRST AUTHOR , 2010. +# +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-01-10 13:46+0000\n" +"Last-Translator: Yury Tello \n" +"Language-Team: Spanish \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2011-01-15 05:56+0000\n" +"X-Generator: Launchpad (build 12177)\n" + +#. module: l10n_cl +#: model:ir.module.module,description:l10n_cl.module_meta_information +msgid "" +"\n" +" Chilean Accounting : chart of Account\n" +" " +msgstr "" +"\n" +" Contabilidad Peruana : Plan de cuentas\n" +" " + +#. module: l10n_cl +#: model:ir.module.module,shortdesc:l10n_cl.module_meta_information +msgid "Chilean Chart of Account" +msgstr "Plan de cuentas de Chile" + +#. module: l10n_cl +#: model:ir.actions.todo,note:l10n_cl.config_call_account_template_in_minimal +msgid "" +"Generate Chart of Accounts from a Chart Template. You will be asked to pass " +"the name of the company, the chart template to follow, the no. of digits to " +"generate the code for your accounts and Bank account, currency to create " +"Journals. Thus,the pure copy of chart Template is generated.\n" +"\tThis is the same wizard that runs from Financial " +"Management/Configuration/Financial Accounting/Financial Accounts/Generate " +"Chart of Accounts from a Chart Template." +msgstr "" +"Generar el plan contable a partir de una plantilla de plan contable. Se le " +"pedirá el nombre de la compañia, la plantilla de plan contable a utilizar, " +"el número de dígitos para generar el código de las cuentas y de la cuenta " +"bancaria, la moneda para crear los diarios. Así pues, se genere una copia " +"exacta de la plantilla de plan contable.\n" +"\tEste es el mismo asistente que se ejecuta desde Contabilidad y finanzas / " +"Configuración / Contabilidad financiera / Cuentas financieras / Generar el " +"plan contable a partir de una plantilla de plan contable." + +#~ msgid "Liability" +#~ msgstr "Pasivo" + +#~ msgid "Asset" +#~ msgstr "Activo" + +#~ msgid "Closed" +#~ msgstr "Cerrado" + +#~ msgid "Income" +#~ msgstr "Ingreso" + +#~ msgid "Expense" +#~ msgstr "Gasto" + +#~ msgid "View" +#~ msgstr "Vista" diff --git a/addons/l10n_cl/i18n/es_CL.po b/addons/l10n_cl/i18n/es_CL.po new file mode 100644 index 00000000000..cd0a9f9c43e --- /dev/null +++ b/addons/l10n_cl/i18n/es_CL.po @@ -0,0 +1,53 @@ +# Spanish (Paraguay) 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-03-21 16:23+0000\n" +"Last-Translator: FULL NAME \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2011-03-22 04:36+0000\n" +"X-Generator: Launchpad (build 12559)\n" + +#. module: l10n_cl +#: model:ir.module.module,description:l10n_cl.module_meta_information +msgid "" +"\n" +" Chilean Accounting : chart of Account\n" +" " +msgstr "" +"\n" +" Contabilidad Chile : Plan de cuentas\n" +" " + +#. module: l10n_cl +#: model:ir.module.module,shortdesc:l10n_cl.module_meta_information +msgid "Chilean Chart of Account" +msgstr "Plan de cuentas de la Chile" + +#. module: l10n_cl +#: model:ir.actions.todo,note:l10n_cl.config_call_account_template_in_minimal +msgid "" +"Generate Chart of Accounts from a Chart Template. You will be asked to pass " +"the name of the company, the chart template to follow, the no. of digits to " +"generate the code for your accounts and Bank account, currency to create " +"Journals. Thus,the pure copy of chart Template is generated.\n" +"\tThis is the same wizard that runs from Financial " +"Management/Configuration/Financial Accounting/Financial Accounts/Generate " +"Chart of Accounts from a Chart Template." +msgstr "" +"Generar el plan contable a partir de una plantilla de plan contable. Se le " +"pedirá el nombre de la compañía, la plantilla de plan contable a utilizar, " +"el número de dígitos para generar el código de las cuentas y de la cuenta " +"bancaria, la moneda para crear los diarios. Así pues, se genere una copia " +"exacta de la plantilla de plan contable.\n" +"\tEste es el mismo asistente que se ejecuta desde Contabilidad y finanzas / " +"Configuración / Contabilidad financiera / Cuentas financieras / Generar el " +"plan contable a partir de una plantilla de plan contable." diff --git a/addons/l10n_cl/i18n/l10n_cl.pot b/addons/l10n_cl/i18n/l10n_cl.pot new file mode 100644 index 00000000000..9b3704b75e1 --- /dev/null +++ b/addons/l10n_cl/i18n/l10n_cl.pot @@ -0,0 +1,35 @@ +# Translation of OpenERP Server. +# This file contains the translation of the following modules: +# * l10n_cl +# +msgid "" +msgstr "" +"Project-Id-Version: OpenERP Server 6.1.0-rc1\n" +"Report-Msgid-Bugs-To: soporte@cubicerp.com\n" +"POT-Creation-Date: 2011-01-11 11:15:31+0000\n" +"PO-Revision-Date: 2011-01-11 11:15:31+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: l10n_cl +#: model:ir.module.module,description:l10n_cl.module_meta_information +msgid "\n" +" Chilean Accounting : chart of Account\n" +" " +msgstr "" + +#. module: l10n_cl +#: model:ir.module.module,shortdesc:l10n_cl.module_meta_information +msgid "Chilean Chart of Account" +msgstr "" + +#. module: l10n_cl +#: model:ir.actions.todo,note:l10n_cl.config_call_account_template_in_minimal +msgid "Generate Chart of Accounts from a Chart Template. You will be asked to pass the name of the company, the chart template to follow, the no. of digits to generate the code for your accounts and Bank account, currency to create Journals. Thus,the pure copy of chart Template is generated.\n" +" This is the same wizard that runs from Financial Management/Configuration/Financial Accounting/Financial Accounts/Generate Chart of Accounts from a Chart Template." +msgstr "" + diff --git a/addons/l10n_cl/l10n_cl_chart.xml b/addons/l10n_cl/l10n_cl_chart.xml new file mode 100644 index 00000000000..5b146eb067d --- /dev/null +++ b/addons/l10n_cl/l10n_cl_chart.xml @@ -0,0 +1,256 @@ + + + + + + + noneviewVistanone + + balanceBG_ACC_10Efectivo y Equivalentes al Efectivoasset + detailBG_ACC_20Otros Activos Financieros Corrientesasset + unreconciledBG_ACC_30Deudores Comercialesasset + unreconciledBG_ACC_50Otras Cuentas por Cobrarasset + balanceBG_ACC_60Inventariosasset + + detailBG_ACN_10Derechos por Cobrar No Corrienteasset + detailBG_ACN_40Otros Activos No Financierosasset + balanceBG_ACN_50Propiedades, Planta y Equipoasset + + unreconciledBG_PAC_10Otros Pasivos Financierosliability + unreconciledBG_PAC_20Cuentas por Pagar Comercialesliability + unreconciledBG_PAC_35Otras Cuentas por Pagarliability + unreconciledBG_PAC_40Otras Provisiones Corrientesliability + unreconciledBG_PAC_45Pasivos por Impuestos Corrientesliability + + unreconciledBG_PAN_10Otros Pasivos Financieros No Corrientesliability + unreconciledBG_PAN_20Otros Cuentas por Pagar No Corrientesliability + unreconciledBG_PAN_40Otras Provisiones No Corrientesliability + + balanceBG_PTN_10Patrimonio Netoliability + + noneEGP_FU_010Ingresos por Actividades Ordinariasincome + noneEGP_FU_030Costo de Ventasexpense + noneEGP_FU_040Gastos de Administraciónexpense + noneEGP_FU_050Costos por Distribuciónexpense + unreconciledEGP_FU_060Ingresos Financierosincome + noneEGP_FU_070Costos Financierosexpense + noneEGP_FU_080Otros Ingresosincome + noneEGP_FU_090Otros Gastosexpense + noneEGP_FU_120Gasto Impuesto a las Rentaexpense + noneEGP_FU_160Ganancia (Pérdida)income + + noneEGP_NA_010Compras de Activo Fijonone + + noneORDCuentas de Ordennone + + noneNCLASIFICADOCuentas No Clasificadasnone + + + + + Argentina + pcge + + view + + + inventario del Balance General + .1.BG + + + view + + + ACTIVOS1view + Activo Circulante11view + Activo Circulante - Caja111view + Activo Circulante - Caja / efectivo CLP111.001liquidity + Activo Circulante - Moneda Extranjera112view + Activo Circulante - Caja / efectivo USD112.001liquidity + Activo Circulante - Fondos fijos113view + Activo Circulante - Fondos fijos / caja chica 01 CLP113.001liquidity + Activo Circulante - Bancos114view + Activo Circulante.../ BCO. CTA CTE CLP114.001liquidity + Activo Circulante - Valores a Depositar 115other + Activo Circulante - Recaudaciones a Depositar 116other + Documentos por Cobrar12view + Documentos por Cobrar / Deudores por Ventas121receivable1 + Documentos por Cobrar / Deudores Morosos122receivable1 + Documentos por Cobrar / Deudores en Gestión Judicial123receivable + Documentos por Cobrar / Deudores Varios124receivable + Documentos por Cobrar / (-) Previsión para Incobrables125receivable1 + Cuentas por Cobrar13view + Cuentas por Cobrar / Préstamos otorgados131receivable + Cuentas por Cobrar / Anticipos a Proveedores132receivable + Cuentas por Cobrar / Anticipo de Impuestos133receivable + Cuentas por Cobrar / Anticipo al Personal134receivable + Cuentas por Cobrar / Alquileres Pagados por Adelantado135receivable + Cuentas por Cobrar / Intereses Pagados por Adelantado136receivable + Cuentas por Cobrar / Accionistas137receivable + Cuentas por Cobrar / (-) Previsión para Descuentos138receivable + Cuentas por Cobrar / (-) Intereses (+) a Devengar139receivable + Inversiones Financieras14view + Inversiones / Acciones Transitorias141other + Inversiones / Acciones Permanentes142other + Inversiones / Títulos Públicos143other + Inversiones / (-) Previsión para Devalorización de Acciones144other + Existencias15view + Existencias - Mercaderías151view + Existencias - Mercaderías / Categoria de productos 01151.01other + Existencias - Mercaderías en Tránsito152other + Materias primas153other + Productos en Curso de Elaboración154other + Productos Elaborados155other + Materiales Varios 156other + (-) Previsión para Desvalorización de Existencias157other + Activo Fijo16view + Activo Fijo / Inmuebles161other + Activo Fijo / Maquinaria162other + Activo Fijo / Equipos163other + Activo Fijo / Material Rodante Motorizado164other + Activo Fijo / (-) Depreciación Acumulada165other + Activo Intangible17view + Activo Intangible / Derecho de Llaves171other + Activo Intangible / Concesiones y Franquicias172other + Activo Intangible / Marcas y Patentes de Invención173other + Activo Intangible / (-) Amortización Acumulada174other + PASIVOS2view + Cuentas por Pagar21view + Cuentas por Pagar / Proveedores211payable1 + Cuentas por Pagar / Anticipos de Clientes212payable1 + Cuentas por Pagar / (-) Intereses a Devengar por Compras al Crédito213payable1 + Pasivo Circulante22view + Pasivo Circulante / Adelantos en Cuenta Corriente221payable + Pasivo Circulante / Prestamos222payable + Pasivo Circulante / Obligaciones a Pagar223payable + Pasivo Circulante / Intereses a Pagar224payable + Pasivo Circulante / Debentures Emitidos225payable + Impuestos por Pagar23view + Impuestos por Pagar / IVA a Pagar231other + Impuestos por Pagar / Impuesto a la Renta a Pagar232other + Remuneraciones por Pagar24view + Remuneraciones por Pagar / Sueldos a Pagar241payable + Remuneraciones por Pagar / Cargas Sociales a Pagar242payable + Remuneraciones por Pagar / Provisión para Sueldo Anual Complementario243payable + Remuneraciones por Pagar / Retenciones a Depositar244payable + Otras Cuentas por Pagar25view + Otras Cuentas por Pagar / Acreedores Varios251payable + Otras Cuentas por Pagar / Dividendos a Pagar252payable + Otras Cuentas por Pagar / Cobros por Adelantado253payable + Otras Cuentas por Pagar / Honorarios Directores y Síndicos a Pagar254payable + Provisiones26view + Provisiones / Previsión Indemnización por Despidos261payable + Provisiones / Previsión para juicios Pendientes262payable + Provisiones / Previsión para Garantías por Service263payable + PATRIMONIO3view + Capital31view + Capital / Capital Propio311other + Capital / Acciones en Circulación312other + Capital / Dividendos a Distribuir en Acciones313other + Capital / (-) Descuento de Emisión de Acciones314other + Aportes No Capitalizados32view + Aportes No Capitalizados / Primas de Emsión321other + Aportes No Capitalizados / Aportes Irrevocables Futura Suscripción de Acciones322other + Ajustes al Patrimonio33view + Ajustes al Patrimonio / Revaluo Técnico de Activo Fijo331other + Futuras Eventualidades34view + Reserva Legal341other + Reserva Estatutaria342other + Reserva Facultativa343other + Reserva para Renovación de Activo Fijo344other + Resultados No Asignados35view + Resultados Acumulados351other + Resultados Acumulados del Ejercicio Anterior352other + Utilidades y Pérdidas del Ejercicio353other + Resultado del Ejercicio354other + + + Cuentas de Resultado + .2.GP + + + view + + + RESULTADO GANANCIA4view + Ingresos de Explotación41view + Ventas411view + Ventas - Categoria de productos 01411.01other + Intereses gananados, obtenidos, percibidos412other + Alquileres gananados, obtenidos, percibidos413other + Comisiones gananados, obtenidos, percibidos414other + Descuentos gananados, obtenidos, percibidos415other + Interese sobre Inversiones416other + Honorarios gananados, obtenidos, percibidos417other + Ganancia Venta de Acciones418other + Ingresos Fuera de Explotación42view + Recupero de Rezagos421other + Recupero de Deudores Incobrables422other + Ganancia Venta de Activo Fijo423other + Donaciones obtenidas, ganandas, percibidas424other + Ganancia Venta Inversiones Permanentes425other + RESULTADO PÉRDIDA5view + Egresos de Explotación51view + Costo de Mercaderías Vendidas511view + Costo de Mercaderías Vendidas - Categoria de productos 01511.01other + Gastos en Depreciación de Activo Fijo512other + Gastos en Amortización513other + Gastos en Sueldos y Jornales514other + Gastos en Cargas Sociales515other + Gastos en Impuestos516other + Gastos Bancarios517other + Gastos en Servicios Públicos518other + Gastos de Publicidad y Propaganda519other + Egresos Fuera de Explotación52view + Gastos en Siniestros521other + Donaciones Cedidas, Otorgadas522other + Pérdida Venta Activo Fijo523other + + + Cuentas de Movimiento + .3.CC + + + view + + + Compras61view + Compras - Categoria de productos 0161.01other + Costos de Producción62other + Gastos de Administración63other + Gastos de Comercialización64other + + + Cuentas de Orden + .4.CO + + + view + + + CUENTAS DE ORDEN DEUDORAS71view + Mercaderias Recibidas en Consignación711other + Depósito de Valores Recibos en Garantía712other + Garantias Otorgadas713other + Documentos Descontados714other + Documentos Endosados715other + CUENTAS DE ORDEN ACREEDORAS72view + Comitente por Mercaderias Recibidas en Consignación721other + Acreedor por Garantías Otorgadas722other + Acreedor por Documentos Descontados723other + + + Chile - Plan de Cuentas + + + + + + + + + + + + + diff --git a/addons/l10n_cl/l10n_cl_wizard.xml b/addons/l10n_cl/l10n_cl_wizard.xml new file mode 100644 index 00000000000..191230c5010 --- /dev/null +++ b/addons/l10n_cl/l10n_cl_wizard.xml @@ -0,0 +1,15 @@ + + + + + + Generate Chart of Accounts from a Chart Template + Generate Chart of Accounts from a Chart Template. You will be asked to pass the name of the company, the chart template to follow, the no. of digits to generate the code for your accounts and Bank account, currency to create Journals. Thus,the pure copy of chart Template is generated. + This is the same wizard that runs from Financial Management/Configuration/Financial Accounting/Financial Accounts/Generate Chart of Accounts from a Chart Template. + + + automatic + + + + From 44fec74adfbf53e4e9a02461b45b8e1b0525441d Mon Sep 17 00:00:00 2001 From: Yury Tello Date: Tue, 21 Feb 2012 15:53:28 -0500 Subject: [PATCH 005/349] [MOD] Ajust title bzr revid: ytello@cubicerp.com-20120221205328-s5y8iz1hjnlkj4hp --- addons/l10n_cl/__openerp__.py | 2 +- addons/l10n_cl/l10n_cl_chart.xml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/addons/l10n_cl/__openerp__.py b/addons/l10n_cl/__openerp__.py index 249bdb3ae48..8c1e1e45b50 100644 --- a/addons/l10n_cl/__openerp__.py +++ b/addons/l10n_cl/__openerp__.py @@ -19,7 +19,7 @@ # ############################################################################## { - "name": "Argentina Localization Chart Account", + "name": "Chile Localization Chart Account", "version": "1.0", "description": """ Chilean accounting chart and tax localization. diff --git a/addons/l10n_cl/l10n_cl_chart.xml b/addons/l10n_cl/l10n_cl_chart.xml index 5b146eb067d..8bc4272c2eb 100644 --- a/addons/l10n_cl/l10n_cl_chart.xml +++ b/addons/l10n_cl/l10n_cl_chart.xml @@ -48,7 +48,7 @@ - Argentina + Chile pcge view From 1bf3b3b515737f6fd929250cf7f7c0d1e03a1ddf Mon Sep 17 00:00:00 2001 From: Date: Thu, 1 Mar 2012 13:21:24 +0100 Subject: [PATCH 006/349] [FIX] use a local variable row instead of res bzr revid: guewen.baconnier@camptocamp.com-20120301122124-0izdqntr76ruqtde --- addons/account/account.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/addons/account/account.py b/addons/account/account.py index c1a30967aea..49ecf61ee51 100644 --- a/addons/account/account.py +++ b/addons/account/account.py @@ -315,8 +315,8 @@ class account_account(osv.osv): self.logger.notifyChannel('addons.'+self._name, netsvc.LOG_DEBUG, 'Status: %s'%cr.statusmessage) - for res in cr.dictfetchall(): - accounts[res['id']] = res + for row in cr.dictfetchall(): + accounts[row['id']] = row # consolidate accounts with direct children children_and_consolidated.reverse() From 79aa02650c22d951e7245cbf7a9c77574deeb895 Mon Sep 17 00:00:00 2001 From: "Amit (OpenERP)" Date: Sat, 28 Apr 2012 18:21:25 +0530 Subject: [PATCH 007/349] [FIX] product : Set the missing dependecy of mail module to product module lp bug: https://launchpad.net/bugs/990474 fixed bzr revid: amp@tinyerp.com-20120428125125-1unkvn70pz1wys6i --- addons/product/__openerp__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/product/__openerp__.py b/addons/product/__openerp__.py index 9b4d2cadee1..918545aa783 100644 --- a/addons/product/__openerp__.py +++ b/addons/product/__openerp__.py @@ -25,7 +25,7 @@ "version" : "1.1", "author" : "OpenERP SA", 'category': 'Sales Management', - "depends" : ["base", "process", "decimal_precision"], + "depends" : ["base", "process", "decimal_precision", "mail"], "init_xml" : [], "demo_xml" : ["product_demo.xml"], "description": """ From 119cb3e9b51226951e42fce05297c3fbb06c521a Mon Sep 17 00:00:00 2001 From: "Ravish Murari (OpenERP)" Date: Mon, 30 Apr 2012 14:50:06 +0530 Subject: [PATCH 008/349] [FIX]change in category of account_anglo_saxon--fixes=lp:985823 bzr revid: rmu@tinyerp.com-20120430092006-nejh5d8mt5eiyhn1 --- addons/account_anglo_saxon/__openerp__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/account_anglo_saxon/__openerp__.py b/addons/account_anglo_saxon/__openerp__.py index 2c10fcc7a19..34fdba75567 100644 --- a/addons/account_anglo_saxon/__openerp__.py +++ b/addons/account_anglo_saxon/__openerp__.py @@ -36,7 +36,7 @@ when the invoice is created to transfer this amount to the debtor or creditor ac Secondly, price differences between actual purchase price and fixed product standard price are booked on a separate account""", "images": ["images/account_anglo_saxon.jpeg"], "depends": ["product", "purchase"], - "category": "Hidden/Dependency", + "category": "Accounting & Finance", "init_xml": [], "demo_xml": [], "update_xml": ["product_view.xml",], From 8a377a190d30176b04eeaaae5d275cb197a17626 Mon Sep 17 00:00:00 2001 From: paulius <> Date: Tue, 1 May 2012 11:44:12 +0530 Subject: [PATCH 009/349] [FIX] improve rounding at invoice subtotal field--fixes=lp:977300 bzr revid: rmu@tinyerp.com-20120501061412-on9rz3lkbm7oqad3 --- addons/account/account.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/addons/account/account.py b/addons/account/account.py index 75bfc891980..63f0e0ec1a7 100644 --- a/addons/account/account.py +++ b/addons/account/account.py @@ -29,6 +29,7 @@ import pooler from osv import fields, osv import decimal_precision as dp from tools.translate import _ +from tools import float_round def check_cycle(self, cr, uid, ids, context=None): """ climbs the ``self._table.parent_id`` chains for 100 levels or @@ -2069,7 +2070,7 @@ class account_tax(osv.osv): } """ precision = self.pool.get('decimal.precision').precision_get(cr, uid, 'Account') - totalin = totalex = round(price_unit * quantity, precision) + totalin = totalex = float_round(price_unit * quantity, precision) tin = [] tex = [] for tax in taxes: From cef801058f56c81b68c25d443524105faa69c25b Mon Sep 17 00:00:00 2001 From: "Jagdish Panchal (Open ERP)" Date: Mon, 14 May 2012 14:59:12 +0530 Subject: [PATCH 010/349] [IMP] l10n_in: improve code for the Indian chart of account add new file installer.py, installer_view.xml, l10n_in_partnership_private_chart.xml, l10n_in/l10n_in_public_firm_chart.xmlxml bzr revid: jap@tinyerp.com-20120514092912-lwbg1r8jy904o7u2 --- addons/l10n_in/__init__.py | 1 + addons/l10n_in/__openerp__.py | 7 +- addons/l10n_in/installer.py | 71 +++ addons/l10n_in/installer_view.xml | 16 + .../l10n_in_partnership_private_chart.xml | 413 +++++++++++++ addons/l10n_in/l10n_in_public_firm_chart.xml | 543 ++++++++++++++++++ 6 files changed, 1050 insertions(+), 1 deletion(-) create mode 100644 addons/l10n_in/installer.py create mode 100644 addons/l10n_in/installer_view.xml create mode 100644 addons/l10n_in/l10n_in_partnership_private_chart.xml create mode 100644 addons/l10n_in/l10n_in_public_firm_chart.xml diff --git a/addons/l10n_in/__init__.py b/addons/l10n_in/__init__.py index 19de03b504c..f97bda7fb89 100644 --- a/addons/l10n_in/__init__.py +++ b/addons/l10n_in/__init__.py @@ -27,5 +27,6 @@ # ############################################################################## +import installer # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/addons/l10n_in/__openerp__.py b/addons/l10n_in/__openerp__.py index c13139f6736..9be4d35705e 100644 --- a/addons/l10n_in/__openerp__.py +++ b/addons/l10n_in/__openerp__.py @@ -36,8 +36,13 @@ Indian accounting chart and localization. ], "demo_xml": [], "update_xml": [ - "l10n_in_chart.xml", +# "l10n_in_chart.xml", + "l10n_in_partnership_private_chart.xml", + "installer_view.xml", + "l10n_in_public_firm_chart.xml", "l10n_in_wizard.xml", + + ], "auto_install": False, "installable": True, diff --git a/addons/l10n_in/installer.py b/addons/l10n_in/installer.py new file mode 100644 index 00000000000..e4242ad5e91 --- /dev/null +++ b/addons/l10n_in/installer.py @@ -0,0 +1,71 @@ +# -*- coding: utf-8 -*- +############################################################################## +# +# OpenERP, Open Source Management Solution +# Copyright (C) 2004-2009 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 +import netsvc +import tools +from os.path import join as opj + +class l10n_installer(osv.osv_memory): + _inherit = 'account.installer' + _columns = { + 'company_type':fields.selection([('partnership_private_company', 'Partnership/Private Firm'), + ('public_company', 'Public Company')], 'Company Type'), + } + + _defaults = { + 'company_type': 'public_company', + } + + def execute_simple(self, cr, uid, ids, context=None): + if context is None: + context = {} + fy_obj = self.pool.get('account.fiscalyear') + for res in self.read(cr, uid, ids, context=context): + if res['charts'] =='l10n_in' and res['company_type']=='public_company': + fp = tools.file_open(opj('l10n_in', 'l10n_in_public_firm_chart.xml')) + tools.convert_xml_import(cr, 'l10n_in', fp, {}, 'init', True, None) + fp.close() + if res['charts'] =='l10n_in' and res['company_type']=='partnership_private_company': + fp = tools.file_open(opj('l10n_in', 'l10n_in_partnership_private_chart.xml')) + tools.convert_xml_import(cr, 'l10n_in', fp, {}, 'init', True, None) + fp.close() + if 'date_start' in res and 'date_stop' in res: + f_ids = fy_obj.search(cr, uid, [('date_start', '<=', res['date_start']), ('date_stop', '>=', res['date_stop']), ('company_id', '=', res['company_id'][0])], context=context) + if not f_ids: + name = code = res['date_start'][:4] + if int(name) != int(res['date_stop'][:4]): + name = res['date_start'][:4] +'-'+ res['date_stop'][:4] + code = res['date_start'][2:4] +'-'+ res['date_stop'][2:4] + vals = { + 'name': name, + 'code': code, + 'date_start': res['date_start'], + 'date_stop': res['date_stop'], + 'company_id': res['company_id'][0] + } + fiscal_id = fy_obj.create(cr, uid, vals, context=context) + if res['period'] == 'month': + fy_obj.create_period(cr, uid, [fiscal_id]) + elif res['period'] == '3months': + fy_obj.create_period3(cr, uid, [fiscal_id]) + +# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/addons/l10n_in/installer_view.xml b/addons/l10n_in/installer_view.xml new file mode 100644 index 00000000000..cfac5ed8513 --- /dev/null +++ b/addons/l10n_in/installer_view.xml @@ -0,0 +1,16 @@ + + + + account.installer.form + account.installer + form + + + + + + + + + + diff --git a/addons/l10n_in/l10n_in_partnership_private_chart.xml b/addons/l10n_in/l10n_in_partnership_private_chart.xml new file mode 100644 index 00000000000..ca009cf0c6e --- /dev/null +++ b/addons/l10n_in/l10n_in_partnership_private_chart.xml @@ -0,0 +1,413 @@ + + + + + + + + Indian Chart of Account Partnership/Private firm + 0 + view + + + + + + + Balance Sheet + 1 + view + + + + + + + + + Assets + 10 + view + + + + + + + Cash + 101 + liquidity + + + + Checking account balance (as shown in company records), currency, coins, checks received from customers but not yet deposited. + + + + Accounts Receivable + 120 + receivable + + + + + + + Merchandise Inventory + 140 + other + + + + + + + Supplies + 150 + other + + + + + + + Prepaid Insurance + 160 + other + + + + + + + Land + 170 + other + + + + + + + Accumulated Depreciation - Buildings + 178 + other + + + + + + + Equipment + 180 + other + + + + + + + Accumulated Depreciation - Equipment + 188 + other + + + + + + + + + Liabilities + 20 + view + + + + + + + Notes Payable + 210 + other + + + + + + + Accounts Payable + 215 + payable + + + + + + + Wages Payable + 220 + other + + + + + + + Interest Payable + 230 + other + + + + + + + Unearned Revenues + 240 + other + + + + + + + Mortgage Loan Payable + 250 + other + + + + + + + + + Owner's Equity Accounts + 29 + view + + + + + + + Mary Smith, Capital + 290 + other + + + + + + + Mary Smith, Drawing + 295 + other + + + + + + + + + Profit And Loss Account + 3 + view + + + + + + + + + Income + 30 + view + + + + + + + + + + Operating Revenue Accounts + 31 + view + + + + + + + Service Revenues + 310 + other + + + + + + + + Non-Operating Revenue and Gains + 80 + view + + + + + + + Interest Revenues + 810 + other + + + + + + + Gain on Sale of Assets + 910 + other + + + + + + + + + Expense + 50 + view + + + + + + + Operating Expense Accounts + 51 + view + + + + + + + Salaries Expense + 500 + other + + + + + + + Wages Expense + 510 + other + + + + + + + Supplies Expense + 540 + other + + + + + + + Rent Expense + 560 + other + + + + + + + Utilities Expense + 570 + other + + + + + + + Telephone Expense + 576 + other + + + + + + + Advertising Expense + 610 + other + + + + + + + + Depreciation Expense + 750 + other + + + + + + + + + Non-Operating Expenses and Losses + 90 + view + + + + + + + Loss on Sale of Assets + 960 + other + + + + + + + + + Indian Chart of Account Partnership/Private firm + + + + + + + + + + + + + + diff --git a/addons/l10n_in/l10n_in_public_firm_chart.xml b/addons/l10n_in/l10n_in_public_firm_chart.xml new file mode 100644 index 00000000000..2bd8a67f346 --- /dev/null +++ b/addons/l10n_in/l10n_in_public_firm_chart.xml @@ -0,0 +1,543 @@ + + + + + + + + + Indian Chart of Account Public firm + 0 + view + + + + + + + Balance Sheet + 1 + view + + + + + + + + Assets + 10 + view + + + + + + + Current Assets + 10000 + view + + + + + + + Cash - Regular Checking + 10100 + liquidity + + + + + + + Cash - Payroll Checking + 10200 + liquidity + + + + + + + Petty Cash Fund + 10600 + liquidity + + + + + + + Accounts Receivable + 12100 + receivable + + + + + + + Allowance for Doubtful Accounts + 12500 + other + + + + + + + Inventory + 13100 + other + + + + + + + Supplies + 14100 + other + + + + + + + Prepaid Insurance + 15300 + other + + + + + + + + + Liabilities + 20 + view + + + + + + + Current Liabilities + 20000 + view + + + + + + + Notes Payable - Credit Line #1 + 20100 + other + + + + + + + Notes Payable - Credit Line #2 + 20200 + other + + + + + + + Accounts Payable + 21000 + payable + + + + + + + Wages Payable + 22100 + other + + + + + + + Interest Payable + 23100 + other + + + + + + + Unearned Revenues + 24500 + other + + + + + + + + Long-term Liabilities + 25000 + view + + + + + + + Mortgage Loan Payable + 25100 + other + + + + + + + Bonds Payable + 25600 + other + + + + + + + Discount on Bonds Payable + 25650 + other + + + + + + + Stockholders' Equity + 27000 + view + + + + + + + Common Stock, No Par + 27100 + other + + + + + + + Retained Earnings + 27500 + other + + + + + + + Treasury Stock + 29500 + other + + + + + + + + + + + Profit And Loss Account + 3 + view + + + + + + + + + Income + 30 + view + + + + + + + + + Operating Revenues + 30000 + view + + + + + + + Sales - Division #1, Product Line 010 + 31010 + other + + + + + + + Sales - Division #1, Product Line 022 + 31022 + other + + + + + + + Sales - Division #2, Product Line 015 + 32015 + other + + + + + + + Sales - Division #3, Product Line 110 + 33110 + other + + + + + + + + Non-Operating Revenue and Gains + 90000 + view + + + + + + + Gain on Sale of Assets + 91800 + other + + + + + + + + + Expense + 40 + view + + + + + + + + + + Cost of Goods Sold + 40000 + view + + + + + + + + COGS - Division #1, Product Line 010 + 41010 + other + + + + + + + COGS - Division #1, Product Line 022 + 41022 + other + + + + + + + COGS - Division #2, Product Line 015 + 42015 + other + + + + + + + COGS - Division #3, Product Line 110 + 43110 + other + + + + + + + + + Marketing Expenses + 50000 + view + + + + + + + Marketing Dept. Salaries + 50100 + other + + + + + + + Marketing Dept. Payroll Taxes + 50150 + other + + + + + + + Marketing Dept. Supplies + 50200 + other + + + + + + + Marketing Dept. Telephone + 50600 + other + + + + + + + + + Payroll Dept. Expenses + 59000 + view + + + + + + + Payroll Dept. Salaries + 59100 + other + + + + + + + Payroll Dept. Payroll Taxes + 59150 + other + + + + + + + Payroll Dept. Supplies + 59200 + other + + + + + + + Payroll Dept. Telephone + 59600 + other + + + + + + + + + Non-Operating Expenses and Losses + 96000 + view + + + + + + + Loss on Sale of Assets + 96100 + other + + + + + + + + + India - Chart of Accounts Public firm + + + + + + + + + + + + From 9ce89b8af3ca6d479e74f8fb909f62b2b718389f Mon Sep 17 00:00:00 2001 From: "Jagdish Panchal (Open ERP)" Date: Tue, 15 May 2012 10:26:41 +0530 Subject: [PATCH 011/349] [IMP] l10n_in: improve code and add new file account_tax_code_template.xml,account_wizard.py, account_wizard_view.xml bzr revid: jap@tinyerp.com-20120515045641-f509ihbt1gwnwpfx --- addons/l10n_in/__init__.py | 1 + addons/l10n_in/__openerp__.py | 6 ++- addons/l10n_in/account_tax.xml | 24 +++++----- addons/l10n_in/account_tax_code_template.xml | 36 +++++++++++++++ addons/l10n_in/account_wizard.py | 35 ++++++++++++++ addons/l10n_in/account_wizard_view.xml | 21 +++++++++ .../l10n_in_partnership_private_chart.xml | 46 +++++++++++++++++-- addons/l10n_in/l10n_in_public_firm_chart.xml | 5 +- 8 files changed, 155 insertions(+), 19 deletions(-) create mode 100644 addons/l10n_in/account_tax_code_template.xml create mode 100644 addons/l10n_in/account_wizard.py create mode 100644 addons/l10n_in/account_wizard_view.xml diff --git a/addons/l10n_in/__init__.py b/addons/l10n_in/__init__.py index f97bda7fb89..9eb002375e0 100644 --- a/addons/l10n_in/__init__.py +++ b/addons/l10n_in/__init__.py @@ -28,5 +28,6 @@ ############################################################################## import installer +import account_wizard # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/addons/l10n_in/__openerp__.py b/addons/l10n_in/__openerp__.py index 9be4d35705e..a0b8f990531 100644 --- a/addons/l10n_in/__openerp__.py +++ b/addons/l10n_in/__openerp__.py @@ -39,10 +39,12 @@ Indian accounting chart and localization. # "l10n_in_chart.xml", "l10n_in_partnership_private_chart.xml", "installer_view.xml", + "account_tax_code_template.xml", +# "account_tax_code.xml", "l10n_in_public_firm_chart.xml", + "account_tax.xml", "l10n_in_wizard.xml", - - + "account_wizard_view.xml", ], "auto_install": False, "installable": True, diff --git a/addons/l10n_in/account_tax.xml b/addons/l10n_in/account_tax.xml index 80f1233f498..f4a62e4435e 100644 --- a/addons/l10n_in/account_tax.xml +++ b/addons/l10n_in/account_tax.xml @@ -3,17 +3,19 @@ - - PPn (10%)(10.0%) - 0.100000 + + Sale Central + + 0.12 percent - - - - - - - - + + + + + + + + + diff --git a/addons/l10n_in/account_tax_code_template.xml b/addons/l10n_in/account_tax_code_template.xml new file mode 100644 index 00000000000..466d3f147b4 --- /dev/null +++ b/addons/l10n_in/account_tax_code_template.xml @@ -0,0 +1,36 @@ + + + + + + + Tax balance to pay + + + + Tax Due (Tax to pay) + + + + + Tax payable + + + + + Tax bases + + + + Base of taxed sales + + + + + + Base of taxed purchases + + + + + diff --git a/addons/l10n_in/account_wizard.py b/addons/l10n_in/account_wizard.py new file mode 100644 index 00000000000..eb6f0dd1491 --- /dev/null +++ b/addons/l10n_in/account_wizard.py @@ -0,0 +1,35 @@ +# -*- encoding: utf-8 -*- +############################################################################## +# +# Author: Nicolas Bessi. Copyright Camptocamp SA +# Donors: Hasa Sàrl, Open Net Sàrl and Prisme Solutions Informatique SA +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . +# +############################################################################## +import tools +from osv import osv +from osv import fields, osv + +class account_wizard(osv.osv_memory): + _inherit ='wizard.multi.charts.accounts' + _columns = { + 'sales_tax_central': fields.boolean('Sales tax central'), + 'vat_resellers': fields.boolean('VAT resellers'), + 'service_tax': fields.boolean('Service tax'), + 'excise_duty': fields.boolean('Excise duty'), + } + + +# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/addons/l10n_in/account_wizard_view.xml b/addons/l10n_in/account_wizard_view.xml new file mode 100644 index 00000000000..7af266c7a81 --- /dev/null +++ b/addons/l10n_in/account_wizard_view.xml @@ -0,0 +1,21 @@ + + + + + + Generate Chart of Accounts from a Chart Template + wizard.multi.charts.accounts + form + + + + + + + + + + + + + diff --git a/addons/l10n_in/l10n_in_partnership_private_chart.xml b/addons/l10n_in/l10n_in_partnership_private_chart.xml index ca009cf0c6e..63853401468 100644 --- a/addons/l10n_in/l10n_in_partnership_private_chart.xml +++ b/addons/l10n_in/l10n_in_partnership_private_chart.xml @@ -5,7 +5,7 @@ - Indian Chart of Account Partnership/Private firm + Partnership/Private Firm Chart of Account 0 view @@ -40,7 +40,7 @@ - Checking account balance (as shown in company records), currency, coins, checks received from customers but not yet deposited. + Checking account balance (as shown in company records), currency, coins, checks received from customers but not yet deposited. @@ -50,6 +50,7 @@ + Amounts owed to the company for services performed or products sold but not yet paid for. @@ -59,6 +60,7 @@ + Cost of merchandise purchased but has not yet been sold. @@ -68,6 +70,7 @@ + Cost of supplies that have not yet been used. Supplies that have been used are recorded in Supplies Expense. @@ -77,6 +80,7 @@ + Cost of insurance that is paid in advance and includes a future accounting period. @@ -86,7 +90,18 @@ - + Cost to acquire and prepare land for use by the company. + + + + Buildings + 175 + other + + + + Cost to purchase or construct buildings for use by the company. + Accumulated Depreciation - Buildings @@ -95,6 +110,7 @@ + Amount of the buildings' cost that has been allocated to Depreciation Expense since the time the building was acquired. @@ -104,6 +120,7 @@ + Cost to acquire and prepare equipment for use by the company. @@ -113,6 +130,7 @@ + Amount of equipment's cost that has been allocated to Depreciation Expense since the time the equipment was acquired. @@ -133,6 +151,7 @@ + The amount of principal due on a formal written promise to pay. Loans from banks are included in this account. @@ -142,6 +161,7 @@ + Amount owed to suppliers who provided goods and services to the company but did not require immediate payment in cash. @@ -151,6 +171,7 @@ + Amount owed to employees for hours worked but not yet paid. @@ -160,6 +181,7 @@ + Amount owed for interest on Notes Payable up until the date of the balance sheet. This is computed by multiplying the amount of the note times the effective interest rate times the time period. @@ -169,6 +191,7 @@ + Amounts received in advance of delivering goods or providing services. When the goods are delivered or services are provided, this liability amount decreases. @@ -178,6 +201,7 @@ + A formal loan that involves a lien on real estate until the loan is repaid. @@ -198,6 +222,7 @@ + Amount the owner invested in the company (through cash or other assets) plus earnings of the company not withdrawn by the owner. @@ -207,6 +232,7 @@ + Amount that the owner of the sole proprietorship has withdrawn for personal use during the current accounting year. At the end of the year, the amount in this account will be transferred into Mary Smith, Capital (account 290). @@ -250,6 +276,7 @@ + Amounts earned from providing services to clients, either for cash or on credit. When a service is provided on credit, both this account and Accounts Receivable will increase. When a service is provided for immediate cash, both this account and Cash will increase. @@ -269,6 +296,7 @@ + Interest and dividends earned on bank accounts, investments or notes receivable. This account is increased when the interest is earned and either Cash or Interest Receivable is also increased. @@ -278,6 +306,7 @@ + Occurs when the company sells one of its assets (other than inventory) for more than the asset's book value. @@ -307,6 +336,7 @@ + Expenses incurred for the work performed by salaried employees during the accounting period. These employees normally receive a fixed amount on a weekly, monthly, or annual basis. @@ -316,6 +346,7 @@ + Expenses incurred for the work performed by non-salaried employees during the accounting period. These employees receive an hourly rate of pay. @@ -325,6 +356,7 @@ + Cost of supplies used up during the accounting period. @@ -334,6 +366,7 @@ + Cost of occupying rented facilities during the accounting period. @@ -343,6 +376,7 @@ + Costs for electricity, heat, water, and sewer that were used during the accounting period. @@ -352,6 +386,7 @@ + Cost of telephone used during the current accounting period. @@ -361,6 +396,7 @@ + Costs incurred by the company during the accounting period for ads, promotions, and other selling and expenses (other than salaries). @@ -371,6 +407,7 @@ + Cost of long-term assets allocated to expense during the current accounting period. @@ -391,12 +428,13 @@ + Occurs when the company sells one of its assets (other than inventory) for less than the asset's book value. - Indian Chart of Account Partnership/Private firm + Partnership/Private Firm Chart of Account diff --git a/addons/l10n_in/l10n_in_public_firm_chart.xml b/addons/l10n_in/l10n_in_public_firm_chart.xml index 2bd8a67f346..297e2947352 100644 --- a/addons/l10n_in/l10n_in_public_firm_chart.xml +++ b/addons/l10n_in/l10n_in_public_firm_chart.xml @@ -6,7 +6,7 @@ - Indian Chart of Account Public firm + Public Firm Chart of Account 0 view @@ -528,8 +528,9 @@ - India - Chart of Accounts Public firm + Public Firm Chart of Account + From 9e4dadab42723953b82638f0b748f0af50345695 Mon Sep 17 00:00:00 2001 From: "Jagdish Panchal (Open ERP)" Date: Wed, 16 May 2012 11:55:29 +0530 Subject: [PATCH 012/349] [IMP] l10n_in: improve code bzr revid: jap@tinyerp.com-20120516062529-o1lip88uk38bmy33 --- addons/l10n_in/__init__.py | 2 +- addons/l10n_in/__openerp__.py | 7 ++---- ...izard.py => account_multi_chart_wizard.py} | 20 +++++++++++++---- ...ml => account_multi_chart_wizard_view.xml} | 4 ++-- addons/l10n_in/account_tax_code_template.xml | 22 ++++++++++++------- addons/l10n_in/installer.py | 12 +++++----- .../l10n_in_partnership_private_chart.xml | 2 +- addons/l10n_in/l10n_in_public_firm_chart.xml | 8 +++---- 8 files changed, 46 insertions(+), 31 deletions(-) rename addons/l10n_in/{account_wizard.py => account_multi_chart_wizard.py} (58%) rename addons/l10n_in/{account_wizard_view.xml => account_multi_chart_wizard_view.xml} (87%) diff --git a/addons/l10n_in/__init__.py b/addons/l10n_in/__init__.py index 9eb002375e0..db0c795ae73 100644 --- a/addons/l10n_in/__init__.py +++ b/addons/l10n_in/__init__.py @@ -28,6 +28,6 @@ ############################################################################## import installer -import account_wizard +import account_multi_chart_wizard # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/addons/l10n_in/__openerp__.py b/addons/l10n_in/__openerp__.py index a0b8f990531..ba901562a0b 100644 --- a/addons/l10n_in/__openerp__.py +++ b/addons/l10n_in/__openerp__.py @@ -36,15 +36,12 @@ Indian accounting chart and localization. ], "demo_xml": [], "update_xml": [ -# "l10n_in_chart.xml", "l10n_in_partnership_private_chart.xml", - "installer_view.xml", "account_tax_code_template.xml", -# "account_tax_code.xml", "l10n_in_public_firm_chart.xml", - "account_tax.xml", "l10n_in_wizard.xml", - "account_wizard_view.xml", + "installer_view.xml", + "account_multi_chart_wizard_view.xml", ], "auto_install": False, "installable": True, diff --git a/addons/l10n_in/account_wizard.py b/addons/l10n_in/account_multi_chart_wizard.py similarity index 58% rename from addons/l10n_in/account_wizard.py rename to addons/l10n_in/account_multi_chart_wizard.py index eb6f0dd1491..ea7974dd430 100644 --- a/addons/l10n_in/account_wizard.py +++ b/addons/l10n_in/account_multi_chart_wizard.py @@ -19,17 +19,29 @@ # ############################################################################## import tools -from osv import osv from osv import fields, osv +from os.path import join as opj -class account_wizard(osv.osv_memory): +class account_multi_charts_wizard(osv.osv_memory): _inherit ='wizard.multi.charts.accounts' _columns = { - 'sales_tax_central': fields.boolean('Sales tax central'), - 'vat_resellers': fields.boolean('VAT resellers'), + 'sales_tax': fields.boolean('Sales tax central'), + 'vat': fields.boolean('VAT resellers'), 'service_tax': fields.boolean('Service tax'), 'excise_duty': fields.boolean('Excise duty'), } + def execute(self, cr, uid, ids, context=None): + super(account_multi_charts_wizard, self).execute(cr, uid, ids, context) + obj_multi = self.browse(cr, uid, ids[0]) + if obj_multi.chart_template_id.name == 'Public Firm Chart of Account': + path = tools.file_open(opj('l10n_in', 'account_sale_tax.xml')) + tools.convert_xml_import(cr, 'l10n_in', path, {}, 'init', True, None) + path.close() + elif obj_multi.chart_template_id.name == 'Partnership/Private Firm Chart of Account': + path = tools.file_open(opj('l10n_in', 'account_vat.xml')) + tools.convert_xml_import(cr, 'l10n_in', path, {}, 'init', True, None) + path.close() + # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/addons/l10n_in/account_wizard_view.xml b/addons/l10n_in/account_multi_chart_wizard_view.xml similarity index 87% rename from addons/l10n_in/account_wizard_view.xml rename to addons/l10n_in/account_multi_chart_wizard_view.xml index 7af266c7a81..449b3af70b9 100644 --- a/addons/l10n_in/account_wizard_view.xml +++ b/addons/l10n_in/account_multi_chart_wizard_view.xml @@ -10,9 +10,9 @@ - - + + diff --git a/addons/l10n_in/account_tax_code_template.xml b/addons/l10n_in/account_tax_code_template.xml index 466d3f147b4..55dbf427e86 100644 --- a/addons/l10n_in/account_tax_code_template.xml +++ b/addons/l10n_in/account_tax_code_template.xml @@ -3,8 +3,13 @@ + + Tax + + - Tax balance to pay + Tax Balance to Pay + @@ -13,23 +18,24 @@ - Tax payable + Tax Payable - Tax bases + Tax Bases + + - Base of taxed sales - + Base of Taxed Sales + - - Base of taxed purchases - + Base of Taxed Purchases + diff --git a/addons/l10n_in/installer.py b/addons/l10n_in/installer.py index e4242ad5e91..1b57127d35c 100644 --- a/addons/l10n_in/installer.py +++ b/addons/l10n_in/installer.py @@ -41,13 +41,13 @@ class l10n_installer(osv.osv_memory): fy_obj = self.pool.get('account.fiscalyear') for res in self.read(cr, uid, ids, context=context): if res['charts'] =='l10n_in' and res['company_type']=='public_company': - fp = tools.file_open(opj('l10n_in', 'l10n_in_public_firm_chart.xml')) - tools.convert_xml_import(cr, 'l10n_in', fp, {}, 'init', True, None) - fp.close() + path = tools.file_open(opj('l10n_in', 'l10n_in_public_firm_chart.xml')) + tools.convert_xml_import(cr, 'l10n_in', path, {}, 'init', True, None) + path.close() if res['charts'] =='l10n_in' and res['company_type']=='partnership_private_company': - fp = tools.file_open(opj('l10n_in', 'l10n_in_partnership_private_chart.xml')) - tools.convert_xml_import(cr, 'l10n_in', fp, {}, 'init', True, None) - fp.close() + path = tools.file_open(opj('l10n_in', 'l10n_in_partnership_private_chart.xml')) + tools.convert_xml_import(cr, 'l10n_in', path, {}, 'init', True, None) + path.close() if 'date_start' in res and 'date_stop' in res: f_ids = fy_obj.search(cr, uid, [('date_start', '<=', res['date_start']), ('date_stop', '>=', res['date_stop']), ('company_id', '=', res['company_id'][0])], context=context) if not f_ids: diff --git a/addons/l10n_in/l10n_in_partnership_private_chart.xml b/addons/l10n_in/l10n_in_partnership_private_chart.xml index 63853401468..f59aaeb407b 100644 --- a/addons/l10n_in/l10n_in_partnership_private_chart.xml +++ b/addons/l10n_in/l10n_in_partnership_private_chart.xml @@ -436,7 +436,7 @@ Partnership/Private Firm Chart of Account - + diff --git a/addons/l10n_in/l10n_in_public_firm_chart.xml b/addons/l10n_in/l10n_in_public_firm_chart.xml index 297e2947352..bcc9a3918a4 100644 --- a/addons/l10n_in/l10n_in_public_firm_chart.xml +++ b/addons/l10n_in/l10n_in_public_firm_chart.xml @@ -296,7 +296,7 @@ - + Sales - Division #1, Product Line 010 31010 other @@ -524,18 +524,18 @@ - + Public Firm Chart of Account - + - + From 15938009e3d5b8bbaf61bc4f24b99806f8b67006 Mon Sep 17 00:00:00 2001 From: "Jagdish Panchal (Open ERP)" Date: Thu, 17 May 2012 12:40:59 +0530 Subject: [PATCH 013/349] [IMP] l10n_in: improve code and add new xml file for different taxes bzr revid: jap@tinyerp.com-20120517071059-0s96fem90ke2i5sw --- addons/l10n_in/__openerp__.py | 4 +- addons/l10n_in/account_multi_chart_wizard.py | 49 ++++++++++++++----- addons/l10n_in/account_tax.xml | 17 +++---- addons/l10n_in/account_tax_code_template.xml | 26 +++++----- .../l10n_in_partnership_private_chart.xml | 2 +- addons/l10n_in/l10n_in_public_firm_chart.xml | 2 +- addons/l10n_in/tax/private_exice_duty.xml | 47 ++++++++++++++++++ addons/l10n_in/tax/private_service.xml | 46 +++++++++++++++++ addons/l10n_in/tax/private_vat.xml | 27 ++++++++++ addons/l10n_in/tax/privete_sale_tax.xml | 27 ++++++++++ .../l10n_in/tax/public_firm_excise_duty.xml | 48 ++++++++++++++++++ addons/l10n_in/tax/public_firm_sales_tax.xml | 23 +++++++++ addons/l10n_in/tax/public_firm_service.xml | 49 +++++++++++++++++++ addons/l10n_in/tax/public_firm_vat.xml | 28 +++++++++++ 14 files changed, 357 insertions(+), 38 deletions(-) create mode 100644 addons/l10n_in/tax/private_exice_duty.xml create mode 100644 addons/l10n_in/tax/private_service.xml create mode 100644 addons/l10n_in/tax/private_vat.xml create mode 100644 addons/l10n_in/tax/privete_sale_tax.xml create mode 100644 addons/l10n_in/tax/public_firm_excise_duty.xml create mode 100644 addons/l10n_in/tax/public_firm_sales_tax.xml create mode 100644 addons/l10n_in/tax/public_firm_service.xml create mode 100644 addons/l10n_in/tax/public_firm_vat.xml diff --git a/addons/l10n_in/__openerp__.py b/addons/l10n_in/__openerp__.py index ba901562a0b..cbacb5e5ac3 100644 --- a/addons/l10n_in/__openerp__.py +++ b/addons/l10n_in/__openerp__.py @@ -36,12 +36,10 @@ Indian accounting chart and localization. ], "demo_xml": [], "update_xml": [ - "l10n_in_partnership_private_chart.xml", "account_tax_code_template.xml", - "l10n_in_public_firm_chart.xml", + "account_multi_chart_wizard_view.xml", "l10n_in_wizard.xml", "installer_view.xml", - "account_multi_chart_wizard_view.xml", ], "auto_install": False, "installable": True, diff --git a/addons/l10n_in/account_multi_chart_wizard.py b/addons/l10n_in/account_multi_chart_wizard.py index ea7974dd430..c19997e3f98 100644 --- a/addons/l10n_in/account_multi_chart_wizard.py +++ b/addons/l10n_in/account_multi_chart_wizard.py @@ -21,6 +21,7 @@ import tools from osv import fields, osv from os.path import join as opj +from lxml import etree class account_multi_charts_wizard(osv.osv_memory): _inherit ='wizard.multi.charts.accounts' @@ -32,16 +33,42 @@ class account_multi_charts_wizard(osv.osv_memory): } def execute(self, cr, uid, ids, context=None): - super(account_multi_charts_wizard, self).execute(cr, uid, ids, context) obj_multi = self.browse(cr, uid, ids[0]) - if obj_multi.chart_template_id.name == 'Public Firm Chart of Account': - path = tools.file_open(opj('l10n_in', 'account_sale_tax.xml')) - tools.convert_xml_import(cr, 'l10n_in', path, {}, 'init', True, None) - path.close() - elif obj_multi.chart_template_id.name == 'Partnership/Private Firm Chart of Account': - path = tools.file_open(opj('l10n_in', 'account_vat.xml')) - tools.convert_xml_import(cr, 'l10n_in', path, {}, 'init', True, None) - path.close() - - + acc_template_id= self.pool.get('account.chart.template').search(cr, uid, [('name','=',obj_multi.chart_template_id.name)], context=context) + for chart_name in self.pool.get('account.chart.template').browse(cr, uid, acc_template_id,context=context): + if obj_multi.chart_template_id.name == chart_name.name: + if obj_multi.sales_tax == True: + path = tools.file_open(opj('l10n_in', 'tax', 'public_firm_sales_tax.xml')) + tools.convert_xml_import(cr, 'l10n_in', path, {}, 'init', True, None) + path.close() + if obj_multi.vat == True: + path = tools.file_open(opj('l10n_in', 'tax', 'public_firm_vat.xml')) + tools.convert_xml_import(cr, 'l10n_in', path, {}, 'init', True, None) + path.close() + if obj_multi.service_tax == True: + path = tools.file_open(opj('l10n_in', 'tax', 'public_firm_service.xml')) + tools.convert_xml_import(cr, 'l10n_in', path, {}, 'init', True, None) + path.close() + if obj_multi.excise_duty == True: + path = tools.file_open(opj('l10n_in', 'tax', 'public_firm_excise_duty.xml')) + tools.convert_xml_import(cr, 'l10n_in', path, {}, 'init', True, None) + path.close() + elif obj_multi.chart_template_id.name == chart_name.name: + if obj_multi.sales_tax == True: + path = tools.file_open(opj('l10n_in', 'tax', 'privete_sale_tax.xml')) + tools.convert_xml_import(cr, 'l10n_in', path, {}, 'init', True, None) + path.close() + if obj_multi.vat == True: + path = tools.file_open(opj('l10n_in', 'tax', 'private_vat.xml')) + tools.convert_xml_import(cr, 'l10n_in', path, {}, 'init', True, None) + path.close() + if obj_multi.service_tax == True: + path = tools.file_open(opj('l10n_in', 'tax', 'private_service.xml')) + tools.convert_xml_import(cr, 'l10n_in', path, {}, 'init', True, None) + path.close() + if obj_multi.excise_duty == True: + path = tools.file_open(opj('l10n_in', 'tax', 'private_exice_duty.xml')) + tools.convert_xml_import(cr, 'l10n_in', path, {}, 'init', True, None) + path.close() + return super(account_multi_charts_wizard, self).execute(cr, uid, ids, context) # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/addons/l10n_in/account_tax.xml b/addons/l10n_in/account_tax.xml index 5077ec64e6e..90e6264398f 100644 --- a/addons/l10n_in/account_tax.xml +++ b/addons/l10n_in/account_tax.xml @@ -4,16 +4,15 @@ - Sale Central - - 0.12 + PPn (10%)(10.0%) + 0.100000 percent - - - - - - + + + + + + diff --git a/addons/l10n_in/account_tax_code_template.xml b/addons/l10n_in/account_tax_code_template.xml index 55dbf427e86..0677ab6dfa6 100644 --- a/addons/l10n_in/account_tax_code_template.xml +++ b/addons/l10n_in/account_tax_code_template.xml @@ -3,39 +3,39 @@ - + Tax - + Tax Balance to Pay - + - + Tax Due (Tax to pay) - + - + Tax Payable - + - + Tax Bases - + - + Base of Taxed Sales - + - + Base of Taxed Purchases - + diff --git a/addons/l10n_in/l10n_in_partnership_private_chart.xml b/addons/l10n_in/l10n_in_partnership_private_chart.xml index f59aaeb407b..2bda406dbee 100644 --- a/addons/l10n_in/l10n_in_partnership_private_chart.xml +++ b/addons/l10n_in/l10n_in_partnership_private_chart.xml @@ -436,7 +436,7 @@ Partnership/Private Firm Chart of Account - + diff --git a/addons/l10n_in/l10n_in_public_firm_chart.xml b/addons/l10n_in/l10n_in_public_firm_chart.xml index bcc9a3918a4..92cad026926 100644 --- a/addons/l10n_in/l10n_in_public_firm_chart.xml +++ b/addons/l10n_in/l10n_in_public_firm_chart.xml @@ -530,7 +530,7 @@ Public Firm Chart of Account - + diff --git a/addons/l10n_in/tax/private_exice_duty.xml b/addons/l10n_in/tax/private_exice_duty.xml new file mode 100644 index 00000000000..5e8f531c0e1 --- /dev/null +++ b/addons/l10n_in/tax/private_exice_duty.xml @@ -0,0 +1,47 @@ + + + + + + + 10 + Exice Duty(10.30%) + Exice Duty + + 0.10 + percent + sale + + 1 + + 1 + + 1 + + 1 + + + + + + Excise duty(10%)(%2) + Excise duty (%2) + 0.02 + percent + sale + + + + + + Excise duty(10%)(%1) + Excise duty (%1) + 0.01 + percent + sale + + + + + + \ No newline at end of file diff --git a/addons/l10n_in/tax/private_service.xml b/addons/l10n_in/tax/private_service.xml new file mode 100644 index 00000000000..49d5bc3542e --- /dev/null +++ b/addons/l10n_in/tax/private_service.xml @@ -0,0 +1,46 @@ + + + + + + + Service(12%) + Service + + 0.12 + percent + sale + + 1 + + 1 + + 1 + + 1 + + + + + + Service(12%)(%2) + Service (%2) + 0.02 + percent + sale + + + + + + Service(12%)(%1) + Service (%1) + 0.01 + percent + sale + + + + + + \ No newline at end of file diff --git a/addons/l10n_in/tax/private_vat.xml b/addons/l10n_in/tax/private_vat.xml new file mode 100644 index 00000000000..860a499ccde --- /dev/null +++ b/addons/l10n_in/tax/private_vat.xml @@ -0,0 +1,27 @@ + + + + + + + 10 + VAT(12%) + VAT resellers + + 0.15 + percent + sale + + 1 + + 1 + + 1 + + 1 + + + + + + \ No newline at end of file diff --git a/addons/l10n_in/tax/privete_sale_tax.xml b/addons/l10n_in/tax/privete_sale_tax.xml new file mode 100644 index 00000000000..6421180506d --- /dev/null +++ b/addons/l10n_in/tax/privete_sale_tax.xml @@ -0,0 +1,27 @@ + + + + + + + 10 + Sale Central (12%) + Sale Central + + 0.12 + percent + sale + + 1 + + 1 + + 1 + + 1 + + + + + + \ No newline at end of file diff --git a/addons/l10n_in/tax/public_firm_excise_duty.xml b/addons/l10n_in/tax/public_firm_excise_duty.xml new file mode 100644 index 00000000000..6c5185ed560 --- /dev/null +++ b/addons/l10n_in/tax/public_firm_excise_duty.xml @@ -0,0 +1,48 @@ + + + + + + + Excise duty(10%) + Excise duty + + + + 0.10 + percent + sale + + 1 + + 1 + + 1 + + 1 + + + + + + Excise duty(10%)(%2) + Excise duty (%2) + 0.02 + percent + sale + + + + + + Excise duty(10%)(%1) + Excise duty (%1) + 0.01 + percent + sale + + + + + + \ No newline at end of file diff --git a/addons/l10n_in/tax/public_firm_sales_tax.xml b/addons/l10n_in/tax/public_firm_sales_tax.xml new file mode 100644 index 00000000000..05fbd4db5b9 --- /dev/null +++ b/addons/l10n_in/tax/public_firm_sales_tax.xml @@ -0,0 +1,23 @@ + + + + + + + Sale Central (12%) + Sale Central + + + + 0.12 + percent + sale + + + + + + + + + \ No newline at end of file diff --git a/addons/l10n_in/tax/public_firm_service.xml b/addons/l10n_in/tax/public_firm_service.xml new file mode 100644 index 00000000000..58c85cb3f74 --- /dev/null +++ b/addons/l10n_in/tax/public_firm_service.xml @@ -0,0 +1,49 @@ + + + + + + + Service(12%) + Service + + + + 0.12 + percent + sale + + 1 + + 1 + + 1 + + 1 + + + + + + Service(12%)(%2) + Service (%2) + 0.02 + percent + sale + + + + + + Service(12%)(%1) + Service (%1) + 0.01 + percent + sale + + + + + + + \ No newline at end of file diff --git a/addons/l10n_in/tax/public_firm_vat.xml b/addons/l10n_in/tax/public_firm_vat.xml new file mode 100644 index 00000000000..02fe9cf56f4 --- /dev/null +++ b/addons/l10n_in/tax/public_firm_vat.xml @@ -0,0 +1,28 @@ + + + + + + + VAT(12%) + VAT + + + + 0.15 + percent + sale + + 1 + + 1 + + 1 + + 1 + + + + + + \ No newline at end of file From 9ee1727eb7c65267726a82337be81cc10b73d0a9 Mon Sep 17 00:00:00 2001 From: "Jagdish Panchal (Open ERP)" Date: Fri, 18 May 2012 10:29:17 +0530 Subject: [PATCH 014/349] [IMP] l10n_in: improve code for tax account bzr revid: jap@tinyerp.com-20120518045917-rv2mgpo2tlel5fm2 --- addons/l10n_in/account_multi_chart_wizard.py | 79 +++++++++---------- addons/l10n_in/tax/private_exice_duty.xml | 28 ++++++- addons/l10n_in/tax/private_service.xml | 21 ++++- addons/l10n_in/tax/private_vat.xml | 20 +++++ addons/l10n_in/tax/privete_sale_tax.xml | 20 +++++ .../l10n_in/tax/public_firm_excise_duty.xml | 22 +++++- addons/l10n_in/tax/public_firm_sales_tax.xml | 22 +++++- addons/l10n_in/tax/public_firm_service.xml | 22 +++++- addons/l10n_in/tax/public_firm_vat.xml | 22 +++++- 9 files changed, 203 insertions(+), 53 deletions(-) diff --git a/addons/l10n_in/account_multi_chart_wizard.py b/addons/l10n_in/account_multi_chart_wizard.py index c19997e3f98..ae2b48055d2 100644 --- a/addons/l10n_in/account_multi_chart_wizard.py +++ b/addons/l10n_in/account_multi_chart_wizard.py @@ -26,49 +26,48 @@ from lxml import etree class account_multi_charts_wizard(osv.osv_memory): _inherit ='wizard.multi.charts.accounts' _columns = { - 'sales_tax': fields.boolean('Sales tax central'), - 'vat': fields.boolean('VAT resellers'), - 'service_tax': fields.boolean('Service tax'), - 'excise_duty': fields.boolean('Excise duty'), + 'sales_tax': fields.boolean('Sales tax central', help='If this field is true it allows you use Sales Tax'), + 'vat': fields.boolean('VAT resellers',help='If this field is true it allows you use VAT'), + 'service_tax': fields.boolean('Service tax', help='If this field is true it allows you use Service tax'), + 'excise_duty': fields.boolean('Excise duty', help='If this field is true it allows you use Excise duty'), } def execute(self, cr, uid, ids, context=None): obj_multi = self.browse(cr, uid, ids[0]) - acc_template_id= self.pool.get('account.chart.template').search(cr, uid, [('name','=',obj_multi.chart_template_id.name)], context=context) - for chart_name in self.pool.get('account.chart.template').browse(cr, uid, acc_template_id,context=context): - if obj_multi.chart_template_id.name == chart_name.name: - if obj_multi.sales_tax == True: - path = tools.file_open(opj('l10n_in', 'tax', 'public_firm_sales_tax.xml')) - tools.convert_xml_import(cr, 'l10n_in', path, {}, 'init', True, None) - path.close() - if obj_multi.vat == True: - path = tools.file_open(opj('l10n_in', 'tax', 'public_firm_vat.xml')) - tools.convert_xml_import(cr, 'l10n_in', path, {}, 'init', True, None) - path.close() - if obj_multi.service_tax == True: - path = tools.file_open(opj('l10n_in', 'tax', 'public_firm_service.xml')) - tools.convert_xml_import(cr, 'l10n_in', path, {}, 'init', True, None) - path.close() - if obj_multi.excise_duty == True: - path = tools.file_open(opj('l10n_in', 'tax', 'public_firm_excise_duty.xml')) - tools.convert_xml_import(cr, 'l10n_in', path, {}, 'init', True, None) - path.close() - elif obj_multi.chart_template_id.name == chart_name.name: - if obj_multi.sales_tax == True: - path = tools.file_open(opj('l10n_in', 'tax', 'privete_sale_tax.xml')) - tools.convert_xml_import(cr, 'l10n_in', path, {}, 'init', True, None) - path.close() - if obj_multi.vat == True: - path = tools.file_open(opj('l10n_in', 'tax', 'private_vat.xml')) - tools.convert_xml_import(cr, 'l10n_in', path, {}, 'init', True, None) - path.close() - if obj_multi.service_tax == True: - path = tools.file_open(opj('l10n_in', 'tax', 'private_service.xml')) - tools.convert_xml_import(cr, 'l10n_in', path, {}, 'init', True, None) - path.close() - if obj_multi.excise_duty == True: - path = tools.file_open(opj('l10n_in', 'tax', 'private_exice_duty.xml')) - tools.convert_xml_import(cr, 'l10n_in', path, {}, 'init', True, None) - path.close() + if obj_multi.chart_template_id.name == 'Public Firm Chart of Account': + if obj_multi.sales_tax == True: + path = tools.file_open(opj('l10n_in', 'tax', 'public_firm_sales_tax.xml')) + tools.convert_xml_import(cr, 'l10n_in', path, {}, 'init', True, None) + path.close() + if obj_multi.vat == True: + path = tools.file_open(opj('l10n_in', 'tax', 'public_firm_vat.xml')) + tools.convert_xml_import(cr, 'l10n_in', path, {}, 'init', True, None) + path.close() + if obj_multi.service_tax == True: + path = tools.file_open(opj('l10n_in', 'tax', 'public_firm_service.xml')) + tools.convert_xml_import(cr, 'l10n_in', path, {}, 'init', True, None) + path.close() + if obj_multi.excise_duty == True: + path = tools.file_open(opj('l10n_in', 'tax', 'public_firm_excise_duty.xml')) + tools.convert_xml_import(cr, 'l10n_in', path, {}, 'init', True, None) + path.close() + elif obj_multi.chart_template_id.name == 'Partnership/Private Firm Chart of Account': + if obj_multi.sales_tax == True: + path = tools.file_open(opj('l10n_in', 'tax', 'privete_sale_tax.xml')) + tools.convert_xml_import(cr, 'l10n_in', path, {}, 'init', True, None) + path.close() + if obj_multi.vat == True: + path = tools.file_open(opj('l10n_in', 'tax', 'private_vat.xml')) + tools.convert_xml_import(cr, 'l10n_in', path, {}, 'init', True, None) + path.close() + if obj_multi.service_tax == True: + path = tools.file_open(opj('l10n_in', 'tax', 'private_service.xml')) + tools.convert_xml_import(cr, 'l10n_in', path, {}, 'init', True, None) + path.close() + if obj_multi.excise_duty == True: + path = tools.file_open(opj('l10n_in', 'tax', 'private_exice_duty.xml')) + tools.convert_xml_import(cr, 'l10n_in', path, {}, 'init', True, None) + path.close() return super(account_multi_charts_wizard, self).execute(cr, uid, ids, context) + # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/addons/l10n_in/tax/private_exice_duty.xml b/addons/l10n_in/tax/private_exice_duty.xml index 5e8f531c0e1..8ea3a972fdf 100644 --- a/addons/l10n_in/tax/private_exice_duty.xml +++ b/addons/l10n_in/tax/private_exice_duty.xml @@ -3,14 +3,34 @@ - + + Exice Duty Receivable + 128 + receivable + + + + + + + Exice Duty Payable + 219 + payable + + + + + + 10 Exice Duty(10.30%) Exice Duty 0.10 percent - sale + all + + 1 @@ -29,7 +49,7 @@ 0.02 percent sale - + @@ -39,7 +59,7 @@ 0.01 percent sale - + diff --git a/addons/l10n_in/tax/private_service.xml b/addons/l10n_in/tax/private_service.xml index 49d5bc3542e..0bb8352096d 100644 --- a/addons/l10n_in/tax/private_service.xml +++ b/addons/l10n_in/tax/private_service.xml @@ -3,13 +3,32 @@ + + Service Tax Receivable + 126 + receivable + + + + + + + Service Tax Payable + 218 + payable + + + + + Service(12%) Service 0.12 percent - sale + + 1 diff --git a/addons/l10n_in/tax/private_vat.xml b/addons/l10n_in/tax/private_vat.xml index 860a499ccde..559115ccc78 100644 --- a/addons/l10n_in/tax/private_vat.xml +++ b/addons/l10n_in/tax/private_vat.xml @@ -3,6 +3,24 @@ + + VAT Receivable + 124 + receivable + + + + + + + VAT Payable + 217 + payable + + + + + 10 VAT(12%) @@ -11,6 +29,8 @@ 0.15 percent sale + + 1 diff --git a/addons/l10n_in/tax/privete_sale_tax.xml b/addons/l10n_in/tax/privete_sale_tax.xml index 6421180506d..2565f2a9e83 100644 --- a/addons/l10n_in/tax/privete_sale_tax.xml +++ b/addons/l10n_in/tax/privete_sale_tax.xml @@ -3,6 +3,24 @@ + + Sales Tax Receivable + 122 + receivable + + + + + + + Sales Tax Payable + 216 + payable + + + + + 10 Sale Central (12%) @@ -11,6 +29,8 @@ 0.12 percent sale + + 1 diff --git a/addons/l10n_in/tax/public_firm_excise_duty.xml b/addons/l10n_in/tax/public_firm_excise_duty.xml index 6c5185ed560..7a78037bcaa 100644 --- a/addons/l10n_in/tax/public_firm_excise_duty.xml +++ b/addons/l10n_in/tax/public_firm_excise_duty.xml @@ -3,11 +3,29 @@ + + Exice Duty Receivable + 158000 + receivable + + + + + + + Exice Duty Payable + 24900 + payable + + + + + Excise duty(10%) Excise duty - - + + 0.10 percent diff --git a/addons/l10n_in/tax/public_firm_sales_tax.xml b/addons/l10n_in/tax/public_firm_sales_tax.xml index 05fbd4db5b9..f0240de33fe 100644 --- a/addons/l10n_in/tax/public_firm_sales_tax.xml +++ b/addons/l10n_in/tax/public_firm_sales_tax.xml @@ -3,11 +3,29 @@ + + Sales Tax Receivable + 154000 + receivable + + + + + + + Sales Tax Payable + 24600 + payable + + + + + Sale Central (12%) Sale Central - - + + 0.12 percent diff --git a/addons/l10n_in/tax/public_firm_service.xml b/addons/l10n_in/tax/public_firm_service.xml index 58c85cb3f74..f4ef12defa2 100644 --- a/addons/l10n_in/tax/public_firm_service.xml +++ b/addons/l10n_in/tax/public_firm_service.xml @@ -3,11 +3,29 @@ + + Service Tax Receivable + 156000 + receivable + + + + + + + Service Tax Payable + 24700 + payable + + + + + Service(12%) Service - - + + 0.12 percent diff --git a/addons/l10n_in/tax/public_firm_vat.xml b/addons/l10n_in/tax/public_firm_vat.xml index 02fe9cf56f4..29fd2f3f9ca 100644 --- a/addons/l10n_in/tax/public_firm_vat.xml +++ b/addons/l10n_in/tax/public_firm_vat.xml @@ -3,11 +3,29 @@ + + VAT Receivable + 157000 + receivable + + + + + + + VAT Payable + 24800 + payable + + + + + VAT(12%) VAT - - + + 0.15 percent From 87f1f877c341752f11196157ebef30f5225d370b Mon Sep 17 00:00:00 2001 From: "Jagdish Panchal (Open ERP)" Date: Fri, 18 May 2012 17:24:21 +0530 Subject: [PATCH 015/349] [IMP] l10n_in: improve code in xml bzr revid: jap@tinyerp.com-20120518115421-z8uejo5jfbtjc03g --- .../l10n_in_partnership_private_chart.xml | 4 +- addons/l10n_in/tax/private_exice_duty.xml | 2 +- addons/l10n_in/tax/private_service.xml | 5 +- addons/l10n_in/tax/private_vat.xml | 70 +++++++++++++++++-- addons/l10n_in/tax/privete_sale_tax.xml | 22 +++++- addons/l10n_in/tax/public_firm_sales_tax.xml | 18 ++++- addons/l10n_in/tax/public_firm_service.xml | 6 +- addons/l10n_in/tax/public_firm_vat.xml | 70 +++++++++++++++++-- 8 files changed, 179 insertions(+), 18 deletions(-) diff --git a/addons/l10n_in/l10n_in_partnership_private_chart.xml b/addons/l10n_in/l10n_in_partnership_private_chart.xml index 2bda406dbee..06d046d320c 100644 --- a/addons/l10n_in/l10n_in_partnership_private_chart.xml +++ b/addons/l10n_in/l10n_in_partnership_private_chart.xml @@ -215,7 +215,7 @@ - + diff --git a/addons/l10n_in/tax/private_exice_duty.xml b/addons/l10n_in/tax/private_exice_duty.xml index 8ea3a972fdf..0127d2bd444 100644 --- a/addons/l10n_in/tax/private_exice_duty.xml +++ b/addons/l10n_in/tax/private_exice_duty.xml @@ -28,7 +28,7 @@ 0.10 percent - all + sale diff --git a/addons/l10n_in/tax/private_service.xml b/addons/l10n_in/tax/private_service.xml index 0bb8352096d..ff049c31f21 100644 --- a/addons/l10n_in/tax/private_service.xml +++ b/addons/l10n_in/tax/private_service.xml @@ -22,6 +22,7 @@ + all Service(12%) Service @@ -46,7 +47,7 @@ Service (%2) 0.02 percent - sale + all @@ -56,7 +57,7 @@ Service (%1) 0.01 percent - sale + all diff --git a/addons/l10n_in/tax/private_vat.xml b/addons/l10n_in/tax/private_vat.xml index 559115ccc78..c91a9fe657a 100644 --- a/addons/l10n_in/tax/private_vat.xml +++ b/addons/l10n_in/tax/private_vat.xml @@ -22,13 +22,12 @@ - 10 - VAT(12%) + VAT(%4) VAT resellers - 0.15 + 0.04 percent - sale + all @@ -43,5 +42,68 @@ + + VAT(4%)(%1) + VAT (%1) + 0.01 + percent + all + + + + + + VAT(12.5%) + VAT (12.5%) + + 0.125 + percent + all + + + + 1 + + 1 + + 1 + + 1 + + + + + + VAT(12.5%)(%2.5) + VAT (%2.5) + 0.025 + percent + sale + + + + + + VAT(8%) + VAT (8%) + + 0.8 + percent + all + + + + 1 + + 1 + + 1 + + 1 + + + + + \ No newline at end of file diff --git a/addons/l10n_in/tax/privete_sale_tax.xml b/addons/l10n_in/tax/privete_sale_tax.xml index 2565f2a9e83..424126aec29 100644 --- a/addons/l10n_in/tax/privete_sale_tax.xml +++ b/addons/l10n_in/tax/privete_sale_tax.xml @@ -21,8 +21,28 @@ + + Sale Central (15%) + Sale Central + + 0.15 + percent + sale + + + + 1 + + 1 + + 1 + + 1 + + + + - 10 Sale Central (12%) Sale Central diff --git a/addons/l10n_in/tax/public_firm_sales_tax.xml b/addons/l10n_in/tax/public_firm_sales_tax.xml index f0240de33fe..fbc92ca9049 100644 --- a/addons/l10n_in/tax/public_firm_sales_tax.xml +++ b/addons/l10n_in/tax/public_firm_sales_tax.xml @@ -22,6 +22,22 @@ + Sale Central (15%) + Sale Central + + + + 0.15 + percent + sale + + + + + + + + Sale Central (12%) Sale Central @@ -35,7 +51,7 @@ - + \ No newline at end of file diff --git a/addons/l10n_in/tax/public_firm_service.xml b/addons/l10n_in/tax/public_firm_service.xml index f4ef12defa2..d78000ca5d5 100644 --- a/addons/l10n_in/tax/public_firm_service.xml +++ b/addons/l10n_in/tax/public_firm_service.xml @@ -29,7 +29,7 @@ 0.12 percent - sale + all 1 @@ -47,7 +47,7 @@ Service (%2) 0.02 percent - sale + all @@ -57,7 +57,7 @@ Service (%1) 0.01 percent - sale + all diff --git a/addons/l10n_in/tax/public_firm_vat.xml b/addons/l10n_in/tax/public_firm_vat.xml index 29fd2f3f9ca..53d3f1efc5a 100644 --- a/addons/l10n_in/tax/public_firm_vat.xml +++ b/addons/l10n_in/tax/public_firm_vat.xml @@ -22,14 +22,45 @@ - VAT(12%) - VAT + VAT(%4) + VAT(%4) - 0.15 + 0.04 percent - sale + all + + 1 + + 1 + + 1 + + 1 + + + + + + VAT(4%)(%1) + VAT (%1) + 0.01 + percent + all + + + + + + VAT(12.5%) + VAT (12.5%) + + + + 0.125 + percent + all 1 @@ -41,6 +72,37 @@ + + + VAT(12.5%)(%2.5) + VAT(12.5%)(%2.5) + 0.025 + percent + all + + + + + + VAT(8%) + VAT(8%) + + + + 0.08 + percent + all + + 1 + + 1 + + 1 + + 1 + + + \ No newline at end of file From b4676557b420d113490d704741e6550ea5ace2f0 Mon Sep 17 00:00:00 2001 From: "Jagdish Panchal (Open ERP)" Date: Mon, 21 May 2012 15:41:04 +0530 Subject: [PATCH 016/349] [IMP] l10n_in: improve code for different tax name bzr revid: jap@tinyerp.com-20120521101104-vdbovr1c37f1fye1 --- addons/l10n_in/account_multi_chart_wizard.py | 2 ++ .../l10n_in_partnership_private_chart.xml | 3 +-- addons/l10n_in/l10n_in_public_firm_chart.xml | 1 - addons/l10n_in/tax/private_exice_duty.xml | 16 +++++++------ addons/l10n_in/tax/private_service.xml | 10 ++++---- addons/l10n_in/tax/private_vat.xml | 23 ++++++++++--------- addons/l10n_in/tax/privete_sale_tax.xml | 14 +++++------ .../l10n_in/tax/public_firm_excise_duty.xml | 10 ++++---- addons/l10n_in/tax/public_firm_sales_tax.xml | 10 ++++---- addons/l10n_in/tax/public_firm_service.xml | 6 ++--- addons/l10n_in/tax/public_firm_vat.xml | 22 +++++++++--------- 11 files changed, 60 insertions(+), 57 deletions(-) diff --git a/addons/l10n_in/account_multi_chart_wizard.py b/addons/l10n_in/account_multi_chart_wizard.py index ae2b48055d2..f530cd44b62 100644 --- a/addons/l10n_in/account_multi_chart_wizard.py +++ b/addons/l10n_in/account_multi_chart_wizard.py @@ -69,5 +69,7 @@ class account_multi_charts_wizard(osv.osv_memory): tools.convert_xml_import(cr, 'l10n_in', path, {}, 'init', True, None) path.close() return super(account_multi_charts_wizard, self).execute(cr, uid, ids, context) + +account_multi_charts_wizard() # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/addons/l10n_in/l10n_in_partnership_private_chart.xml b/addons/l10n_in/l10n_in_partnership_private_chart.xml index 06d046d320c..d77ed6424fd 100644 --- a/addons/l10n_in/l10n_in_partnership_private_chart.xml +++ b/addons/l10n_in/l10n_in_partnership_private_chart.xml @@ -442,8 +442,7 @@ - - + diff --git a/addons/l10n_in/l10n_in_public_firm_chart.xml b/addons/l10n_in/l10n_in_public_firm_chart.xml index 92cad026926..f3a9c4d7c6e 100644 --- a/addons/l10n_in/l10n_in_public_firm_chart.xml +++ b/addons/l10n_in/l10n_in_public_firm_chart.xml @@ -537,7 +537,6 @@ - diff --git a/addons/l10n_in/tax/private_exice_duty.xml b/addons/l10n_in/tax/private_exice_duty.xml index 0127d2bd444..825bb4afab0 100644 --- a/addons/l10n_in/tax/private_exice_duty.xml +++ b/addons/l10n_in/tax/private_exice_duty.xml @@ -22,10 +22,10 @@ - 10 - Exice Duty(10.30%) + Exice Duty - 10.30% + 10 Exice Duty - + 0.10 percent sale @@ -44,8 +44,9 @@ - Excise duty(10%)(%2) - Excise duty (%2) + 11 + Excise duty -10% -%2 + Excise duty - 2% 0.02 percent sale @@ -54,8 +55,9 @@ - Excise duty(10%)(%1) - Excise duty (%1) + 11 + Excise duty - 10% - %1 + Excise duty - 1% 0.01 percent sale diff --git a/addons/l10n_in/tax/private_service.xml b/addons/l10n_in/tax/private_service.xml index ff049c31f21..f5566a5dce1 100644 --- a/addons/l10n_in/tax/private_service.xml +++ b/addons/l10n_in/tax/private_service.xml @@ -23,7 +23,7 @@ all - Service(12%) + Service - 12% Service 0.12 @@ -43,8 +43,8 @@ - Service(12%)(%2) - Service (%2) + Service - 12% - %2 + Service - 2% 0.02 percent all @@ -53,8 +53,8 @@ - Service(12%)(%1) - Service (%1) + Service - 12% - 1% + Service - 1% 0.01 percent all diff --git a/addons/l10n_in/tax/private_vat.xml b/addons/l10n_in/tax/private_vat.xml index c91a9fe657a..a025e72310c 100644 --- a/addons/l10n_in/tax/private_vat.xml +++ b/addons/l10n_in/tax/private_vat.xml @@ -22,9 +22,10 @@ - VAT(%4) + 30 + VAT - 4% VAT resellers - + 0.04 percent all @@ -43,8 +44,8 @@ - VAT(4%)(%1) - VAT (%1) + VAT - 4% - %1 + VAT - %1 0.01 percent all @@ -53,9 +54,9 @@ - VAT(12.5%) - VAT (12.5%) - + VAT - 12.5% + VAT - 12.5% + 0.125 percent all @@ -74,7 +75,7 @@ - VAT(12.5%)(%2.5) + VAT - 12.5%- %2.5 VAT (%2.5) 0.025 percent @@ -84,8 +85,8 @@ - VAT(8%) - VAT (8%) + VAT - 8% + VAT - 8% 0.8 percent @@ -100,7 +101,7 @@ 1 1 - + diff --git a/addons/l10n_in/tax/privete_sale_tax.xml b/addons/l10n_in/tax/privete_sale_tax.xml index 424126aec29..5d741879798 100644 --- a/addons/l10n_in/tax/privete_sale_tax.xml +++ b/addons/l10n_in/tax/privete_sale_tax.xml @@ -20,10 +20,10 @@ - + - Sale Central (15%) - Sale Central + Sale Tax - 15% + Sale Tax - 15% 0.15 percent @@ -38,13 +38,13 @@ 1 1 - + - Sale Central (12%) - Sale Central + Sale Tax -12% + Sale Tax - 12% 0.12 percent @@ -59,7 +59,7 @@ 1 1 - + diff --git a/addons/l10n_in/tax/public_firm_excise_duty.xml b/addons/l10n_in/tax/public_firm_excise_duty.xml index 7a78037bcaa..e8f010da3ac 100644 --- a/addons/l10n_in/tax/public_firm_excise_duty.xml +++ b/addons/l10n_in/tax/public_firm_excise_duty.xml @@ -22,7 +22,7 @@ - Excise duty(10%) + Excise duty - 10% Excise duty @@ -43,8 +43,8 @@ - Excise duty(10%)(%2) - Excise duty (%2) + Excise duty - 10% - 2% + Excise duty - %2 0.02 percent sale @@ -53,8 +53,8 @@ - Excise duty(10%)(%1) - Excise duty (%1) + Excise duty - 10% - 1% + Excise duty - 1% 0.01 percent sale diff --git a/addons/l10n_in/tax/public_firm_sales_tax.xml b/addons/l10n_in/tax/public_firm_sales_tax.xml index fbc92ca9049..3d805a4a049 100644 --- a/addons/l10n_in/tax/public_firm_sales_tax.xml +++ b/addons/l10n_in/tax/public_firm_sales_tax.xml @@ -22,8 +22,8 @@ - Sale Central (15%) - Sale Central + Sale Tax - 15% + Sale Tax - 15% @@ -38,8 +38,8 @@ - Sale Central (12%) - Sale Central + Sale Tax - 12% + Sale Tax - 12% @@ -51,7 +51,7 @@ - + \ No newline at end of file diff --git a/addons/l10n_in/tax/public_firm_service.xml b/addons/l10n_in/tax/public_firm_service.xml index d78000ca5d5..dcfc7cd343e 100644 --- a/addons/l10n_in/tax/public_firm_service.xml +++ b/addons/l10n_in/tax/public_firm_service.xml @@ -22,7 +22,7 @@ - Service(12%) + Service - 12% Service @@ -43,7 +43,7 @@ - Service(12%)(%2) + Service - 12% - 2% Service (%2) 0.02 percent @@ -53,7 +53,7 @@ - Service(12%)(%1) + Service - 12% - 1% Service (%1) 0.01 percent diff --git a/addons/l10n_in/tax/public_firm_vat.xml b/addons/l10n_in/tax/public_firm_vat.xml index 53d3f1efc5a..3fb5eea8dcc 100644 --- a/addons/l10n_in/tax/public_firm_vat.xml +++ b/addons/l10n_in/tax/public_firm_vat.xml @@ -22,11 +22,11 @@ - VAT(%4) - VAT(%4) + VAT - 4% + VAT - 4% - + 0.04 percent all @@ -43,8 +43,8 @@ - VAT(4%)(%1) - VAT (%1) + VAT - 4% -1% + VAT - 1% 0.01 percent all @@ -53,8 +53,8 @@ - VAT(12.5%) - VAT (12.5%) + VAT - 12.5% + VAT - 12.5% @@ -74,8 +74,8 @@ - VAT(12.5%)(%2.5) - VAT(12.5%)(%2.5) + VAT - 12.5% - %2.5 + VAT - 12.5% - %2.5 0.025 percent all @@ -84,8 +84,8 @@ - VAT(8%) - VAT(8%) + VAT - 8% + VAT - 8% From 2808efa6fd74890e15f1bdbafb1443b3be871d8c Mon Sep 17 00:00:00 2001 From: "Jagdish Panchal (Open ERP)" Date: Tue, 22 May 2012 18:51:19 +0530 Subject: [PATCH 017/349] [IMP] l10n_in: improve code in account_multi_chart_wizard_view.py add new onchange method bzr revid: jap@tinyerp.com-20120522132119-0mwnk1ue8r2ct7q0 --- addons/l10n_in/account_multi_chart_wizard.py | 24 ++++++++++++++++--- .../account_multi_chart_wizard_view.xml | 9 +++---- addons/l10n_in/tax/public_firm_sales_tax.xml | 2 +- 3 files changed, 27 insertions(+), 8 deletions(-) diff --git a/addons/l10n_in/account_multi_chart_wizard.py b/addons/l10n_in/account_multi_chart_wizard.py index f530cd44b62..784a7b748ca 100644 --- a/addons/l10n_in/account_multi_chart_wizard.py +++ b/addons/l10n_in/account_multi_chart_wizard.py @@ -30,19 +30,37 @@ class account_multi_charts_wizard(osv.osv_memory): 'vat': fields.boolean('VAT resellers',help='If this field is true it allows you use VAT'), 'service_tax': fields.boolean('Service tax', help='If this field is true it allows you use Service tax'), 'excise_duty': fields.boolean('Excise duty', help='If this field is true it allows you use Excise duty'), + 'is_indian_chart': fields.boolean('Flag') } + def onchange_chart_template_id(self, cr, uid, ids, chart_template_id=False, context=None): + res = super(account_multi_charts_wizard, self).onchange_chart_template_id(cr, uid, ids, chart_template_id, context) + tax_templ_obj = self.pool.get('account.tax.template') + res['value'] = {'complete_tax_set': False, 'sale_tax': False, 'purchase_tax': False} + data = self.pool.get('account.chart.template').browse(cr, uid, chart_template_id, context=context) + if data.name in ('Public Firm Chart of Account','Partnership/Private Firm Chart of Account'): + res.update({'value': {'is_indian_chart': True}}) + else: + res.update({'value': {'is_indian_chart': False}}) + if data.complete_tax_set: + sale_tax_ids = tax_templ_obj.search(cr, uid, [("chart_template_id" + , "=", chart_template_id), ('type_tax_use', 'in', ('sale','all'))], order="sequence, id desc") + purchase_tax_ids = tax_templ_obj.search(cr, uid, [("chart_template_id" + , "=", chart_template_id), ('type_tax_use', 'in', ('purchase','all'))], order="sequence, id desc") + res['value'].update({'sale_tax': sale_tax_ids and sale_tax_ids[0] or False, 'purchase_tax': purchase_tax_ids and purchase_tax_ids[0] or False}) + return res + def execute(self, cr, uid, ids, context=None): obj_multi = self.browse(cr, uid, ids[0]) if obj_multi.chart_template_id.name == 'Public Firm Chart of Account': if obj_multi.sales_tax == True: path = tools.file_open(opj('l10n_in', 'tax', 'public_firm_sales_tax.xml')) tools.convert_xml_import(cr, 'l10n_in', path, {}, 'init', True, None) - path.close() + path.close() if obj_multi.vat == True: path = tools.file_open(opj('l10n_in', 'tax', 'public_firm_vat.xml')) tools.convert_xml_import(cr, 'l10n_in', path, {}, 'init', True, None) - path.close() + path.close() if obj_multi.service_tax == True: path = tools.file_open(opj('l10n_in', 'tax', 'public_firm_service.xml')) tools.convert_xml_import(cr, 'l10n_in', path, {}, 'init', True, None) @@ -67,7 +85,7 @@ class account_multi_charts_wizard(osv.osv_memory): if obj_multi.excise_duty == True: path = tools.file_open(opj('l10n_in', 'tax', 'private_exice_duty.xml')) tools.convert_xml_import(cr, 'l10n_in', path, {}, 'init', True, None) - path.close() + path.close() return super(account_multi_charts_wizard, self).execute(cr, uid, ids, context) account_multi_charts_wizard() diff --git a/addons/l10n_in/account_multi_chart_wizard_view.xml b/addons/l10n_in/account_multi_chart_wizard_view.xml index 449b3af70b9..63ef1ccc94c 100644 --- a/addons/l10n_in/account_multi_chart_wizard_view.xml +++ b/addons/l10n_in/account_multi_chart_wizard_view.xml @@ -10,10 +10,11 @@ - - - - + + + + + diff --git a/addons/l10n_in/tax/public_firm_sales_tax.xml b/addons/l10n_in/tax/public_firm_sales_tax.xml index 3d805a4a049..d88c1370368 100644 --- a/addons/l10n_in/tax/public_firm_sales_tax.xml +++ b/addons/l10n_in/tax/public_firm_sales_tax.xml @@ -20,7 +20,7 @@ - + Sale Tax - 15% Sale Tax - 15% From 2ae3cb623e2a5d9c061f3ee2397f1d68eb1db442 Mon Sep 17 00:00:00 2001 From: "Jagdish Panchal (Open ERP)" Date: Wed, 23 May 2012 17:34:55 +0530 Subject: [PATCH 018/349] [IMP] l10n_in: Remove the receivable accounts from tax, change template name, add new account product sale and improve code bzr revid: jap@tinyerp.com-20120523120455-197vc5xqni5atdcp --- addons/l10n_in/account_multi_chart_wizard.py | 51 +++++++++---------- .../account_multi_chart_wizard_view.xml | 2 +- addons/l10n_in/installer.py | 5 +- .../l10n_in_partnership_private_chart.xml | 17 +++++-- addons/l10n_in/l10n_in_public_firm_chart.xml | 4 +- addons/l10n_in/tax/private_exice_duty.xml | 11 +--- addons/l10n_in/tax/private_service.xml | 11 +--- addons/l10n_in/tax/private_vat.xml | 17 ++----- addons/l10n_in/tax/privete_sale_tax.xml | 13 +---- .../l10n_in/tax/public_firm_excise_duty.xml | 11 +--- addons/l10n_in/tax/public_firm_sales_tax.xml | 13 +---- addons/l10n_in/tax/public_firm_service.xml | 11 +--- addons/l10n_in/tax/public_firm_vat.xml | 15 ++---- 13 files changed, 58 insertions(+), 123 deletions(-) diff --git a/addons/l10n_in/account_multi_chart_wizard.py b/addons/l10n_in/account_multi_chart_wizard.py index 784a7b748ca..4fbe1fa2cc5 100644 --- a/addons/l10n_in/account_multi_chart_wizard.py +++ b/addons/l10n_in/account_multi_chart_wizard.py @@ -18,18 +18,19 @@ # along with this program. If not, see . # ############################################################################## -import tools +from lxml import etree from osv import fields, osv from os.path import join as opj -from lxml import etree +import tools + class account_multi_charts_wizard(osv.osv_memory): _inherit ='wizard.multi.charts.accounts' _columns = { - 'sales_tax': fields.boolean('Sales tax central', help='If this field is true it allows you use Sales Tax'), - 'vat': fields.boolean('VAT resellers',help='If this field is true it allows you use VAT'), - 'service_tax': fields.boolean('Service tax', help='If this field is true it allows you use Service tax'), - 'excise_duty': fields.boolean('Excise duty', help='If this field is true it allows you use Excise duty'), + 'sales_tax': fields.boolean('Sales Tax', help='If this field is true it allows you use Sales Tax'), + 'vat': fields.boolean('VAT',help='If this field is true it allows you use VAT'), + 'service_tax': fields.boolean('Service Tax', help='If this field is true it allows you use Service tax'), + 'excise_duty': fields.boolean('Excise Duty', help='If this field is true it allows you use Excise duty'), 'is_indian_chart': fields.boolean('Flag') } @@ -38,51 +39,49 @@ class account_multi_charts_wizard(osv.osv_memory): tax_templ_obj = self.pool.get('account.tax.template') res['value'] = {'complete_tax_set': False, 'sale_tax': False, 'purchase_tax': False} data = self.pool.get('account.chart.template').browse(cr, uid, chart_template_id, context=context) - if data.name in ('Public Firm Chart of Account','Partnership/Private Firm Chart of Account'): - res.update({'value': {'is_indian_chart': True}}) - else: - res.update({'value': {'is_indian_chart': False}}) - if data.complete_tax_set: - sale_tax_ids = tax_templ_obj.search(cr, uid, [("chart_template_id" - , "=", chart_template_id), ('type_tax_use', 'in', ('sale','all'))], order="sequence, id desc") - purchase_tax_ids = tax_templ_obj.search(cr, uid, [("chart_template_id" - , "=", chart_template_id), ('type_tax_use', 'in', ('purchase','all'))], order="sequence, id desc") - res['value'].update({'sale_tax': sale_tax_ids and sale_tax_ids[0] or False, 'purchase_tax': purchase_tax_ids and purchase_tax_ids[0] or False}) + if data.name in ('India - Chart of Accounts for Public Firm','India - Chart of Accounts for Partnership/Private Firm'): + res['value'].update({'is_indian_chart': True}) + else: + res['value'].update({'is_indian_chart': False}) + if data.name == 'India - Chart of Accounts for Public Firm': + res['value'].update({'sales_tax': True,'vat':True, 'service_tax':True, 'excise_duty': True}) + elif data.name == 'India - Chart of Accounts for Partnership/Private Firm': + res['value'].update({'sales_tax': True,'vat':True}) return res def execute(self, cr, uid, ids, context=None): obj_multi = self.browse(cr, uid, ids[0]) - if obj_multi.chart_template_id.name == 'Public Firm Chart of Account': - if obj_multi.sales_tax == True: + if obj_multi.chart_template_id.name == 'India - Chart of Accounts for Public Firm': + if obj_multi.sales_tax: path = tools.file_open(opj('l10n_in', 'tax', 'public_firm_sales_tax.xml')) tools.convert_xml_import(cr, 'l10n_in', path, {}, 'init', True, None) path.close() - if obj_multi.vat == True: + if obj_multi.vat: path = tools.file_open(opj('l10n_in', 'tax', 'public_firm_vat.xml')) tools.convert_xml_import(cr, 'l10n_in', path, {}, 'init', True, None) path.close() - if obj_multi.service_tax == True: + if obj_multi.service_tax: path = tools.file_open(opj('l10n_in', 'tax', 'public_firm_service.xml')) tools.convert_xml_import(cr, 'l10n_in', path, {}, 'init', True, None) path.close() - if obj_multi.excise_duty == True: + if obj_multi.excise_duty: path = tools.file_open(opj('l10n_in', 'tax', 'public_firm_excise_duty.xml')) tools.convert_xml_import(cr, 'l10n_in', path, {}, 'init', True, None) path.close() - elif obj_multi.chart_template_id.name == 'Partnership/Private Firm Chart of Account': - if obj_multi.sales_tax == True: + elif obj_multi.chart_template_id.name == 'India - Chart of Accounts for Partnership/Private Firm': + if obj_multi.sales_tax: path = tools.file_open(opj('l10n_in', 'tax', 'privete_sale_tax.xml')) tools.convert_xml_import(cr, 'l10n_in', path, {}, 'init', True, None) path.close() - if obj_multi.vat == True: + if obj_multi.vat: path = tools.file_open(opj('l10n_in', 'tax', 'private_vat.xml')) tools.convert_xml_import(cr, 'l10n_in', path, {}, 'init', True, None) path.close() - if obj_multi.service_tax == True: + if obj_multi.service_tax: path = tools.file_open(opj('l10n_in', 'tax', 'private_service.xml')) tools.convert_xml_import(cr, 'l10n_in', path, {}, 'init', True, None) path.close() - if obj_multi.excise_duty == True: + if obj_multi.excise_duty: path = tools.file_open(opj('l10n_in', 'tax', 'private_exice_duty.xml')) tools.convert_xml_import(cr, 'l10n_in', path, {}, 'init', True, None) path.close() diff --git a/addons/l10n_in/account_multi_chart_wizard_view.xml b/addons/l10n_in/account_multi_chart_wizard_view.xml index 63ef1ccc94c..4851392748f 100644 --- a/addons/l10n_in/account_multi_chart_wizard_view.xml +++ b/addons/l10n_in/account_multi_chart_wizard_view.xml @@ -8,7 +8,7 @@ form - + diff --git a/addons/l10n_in/installer.py b/addons/l10n_in/installer.py index 1b57127d35c..b189a061da4 100644 --- a/addons/l10n_in/installer.py +++ b/addons/l10n_in/installer.py @@ -18,17 +18,16 @@ # along with this program. If not, see . # ############################################################################## - from osv import fields, osv +from os.path import join as opj import netsvc import tools -from os.path import join as opj class l10n_installer(osv.osv_memory): _inherit = 'account.installer' _columns = { 'company_type':fields.selection([('partnership_private_company', 'Partnership/Private Firm'), - ('public_company', 'Public Company')], 'Company Type'), + ('public_company', 'Public Firm')], 'Company Type', required=True), } _defaults = { diff --git a/addons/l10n_in/l10n_in_partnership_private_chart.xml b/addons/l10n_in/l10n_in_partnership_private_chart.xml index d77ed6424fd..f5185d85426 100644 --- a/addons/l10n_in/l10n_in_partnership_private_chart.xml +++ b/addons/l10n_in/l10n_in_partnership_private_chart.xml @@ -238,7 +238,7 @@ - Profit And Loss Account + Profit And Loss 3 view @@ -277,8 +277,17 @@ Amounts earned from providing services to clients, either for cash or on credit. When a service is provided on credit, both this account and Accounts Receivable will increase. When a service is provided for immediate cash, both this account and Cash will increase. - + + + Product Sales + 311 + other + + + + Sales of product account + Non-Operating Revenue and Gains @@ -301,7 +310,7 @@ Gain on Sale of Assets - 910 + 811 other @@ -434,7 +443,7 @@ - Partnership/Private Firm Chart of Account + India - Chart of Accounts for Partnership/Private Firm diff --git a/addons/l10n_in/l10n_in_public_firm_chart.xml b/addons/l10n_in/l10n_in_public_firm_chart.xml index f3a9c4d7c6e..8e84d9b8d79 100644 --- a/addons/l10n_in/l10n_in_public_firm_chart.xml +++ b/addons/l10n_in/l10n_in_public_firm_chart.xml @@ -266,7 +266,7 @@ - Profit And Loss Account + Profit And Loss 3 view @@ -528,7 +528,7 @@ - Public Firm Chart of Account + India - Chart of Accounts for Public Firm diff --git a/addons/l10n_in/tax/private_exice_duty.xml b/addons/l10n_in/tax/private_exice_duty.xml index 825bb4afab0..568d480eb86 100644 --- a/addons/l10n_in/tax/private_exice_duty.xml +++ b/addons/l10n_in/tax/private_exice_duty.xml @@ -3,15 +3,6 @@ - - Exice Duty Receivable - 128 - receivable - - - - - Exice Duty Payable 219 @@ -29,7 +20,7 @@ 0.10 percent sale - + 1 diff --git a/addons/l10n_in/tax/private_service.xml b/addons/l10n_in/tax/private_service.xml index f5566a5dce1..1ce8cbfe74c 100644 --- a/addons/l10n_in/tax/private_service.xml +++ b/addons/l10n_in/tax/private_service.xml @@ -3,15 +3,6 @@ - - Service Tax Receivable - 126 - receivable - - - - - Service Tax Payable 218 @@ -28,7 +19,7 @@ 0.12 percent - + 1 diff --git a/addons/l10n_in/tax/private_vat.xml b/addons/l10n_in/tax/private_vat.xml index a025e72310c..d717201b577 100644 --- a/addons/l10n_in/tax/private_vat.xml +++ b/addons/l10n_in/tax/private_vat.xml @@ -3,15 +3,6 @@ - - VAT Receivable - 124 - receivable - - - - - VAT Payable 217 @@ -24,12 +15,12 @@ 30 VAT - 4% - VAT resellers + VAT 0.04 percent all - + 1 @@ -60,7 +51,7 @@ 0.125 percent all - + 1 @@ -91,7 +82,7 @@ 0.8 percent all - + 1 diff --git a/addons/l10n_in/tax/privete_sale_tax.xml b/addons/l10n_in/tax/privete_sale_tax.xml index 5d741879798..dc89d3d3fee 100644 --- a/addons/l10n_in/tax/privete_sale_tax.xml +++ b/addons/l10n_in/tax/privete_sale_tax.xml @@ -3,15 +3,6 @@ - - Sales Tax Receivable - 122 - receivable - - - - - Sales Tax Payable 216 @@ -28,7 +19,7 @@ 0.15 percent sale - + 1 @@ -49,7 +40,7 @@ 0.12 percent sale - + 1 diff --git a/addons/l10n_in/tax/public_firm_excise_duty.xml b/addons/l10n_in/tax/public_firm_excise_duty.xml index e8f010da3ac..031c92307fd 100644 --- a/addons/l10n_in/tax/public_firm_excise_duty.xml +++ b/addons/l10n_in/tax/public_firm_excise_duty.xml @@ -3,15 +3,6 @@ - - Exice Duty Receivable - 158000 - receivable - - - - - Exice Duty Payable 24900 @@ -24,7 +15,7 @@ Excise duty - 10% Excise duty - + 0.10 diff --git a/addons/l10n_in/tax/public_firm_sales_tax.xml b/addons/l10n_in/tax/public_firm_sales_tax.xml index d88c1370368..27d768aba7a 100644 --- a/addons/l10n_in/tax/public_firm_sales_tax.xml +++ b/addons/l10n_in/tax/public_firm_sales_tax.xml @@ -3,15 +3,6 @@ - - Sales Tax Receivable - 154000 - receivable - - - - - Sales Tax Payable 24600 @@ -24,7 +15,7 @@ Sale Tax - 15% Sale Tax - 15% - + 0.15 @@ -40,7 +31,7 @@ Sale Tax - 12% Sale Tax - 12% - + 0.12 diff --git a/addons/l10n_in/tax/public_firm_service.xml b/addons/l10n_in/tax/public_firm_service.xml index dcfc7cd343e..f57eee6796b 100644 --- a/addons/l10n_in/tax/public_firm_service.xml +++ b/addons/l10n_in/tax/public_firm_service.xml @@ -3,15 +3,6 @@ - - Service Tax Receivable - 156000 - receivable - - - - - Service Tax Payable 24700 @@ -24,7 +15,7 @@ Service - 12% Service - + 0.12 diff --git a/addons/l10n_in/tax/public_firm_vat.xml b/addons/l10n_in/tax/public_firm_vat.xml index 3fb5eea8dcc..9ffe2b9d9ca 100644 --- a/addons/l10n_in/tax/public_firm_vat.xml +++ b/addons/l10n_in/tax/public_firm_vat.xml @@ -3,15 +3,6 @@ - - VAT Receivable - 157000 - receivable - - - - - VAT Payable 24800 @@ -24,7 +15,7 @@ VAT - 4% VAT - 4% - + 0.04 @@ -55,7 +46,7 @@ VAT - 12.5% VAT - 12.5% - + 0.125 @@ -86,7 +77,7 @@ VAT - 8% VAT - 8% - + 0.08 From f86c011e90cb81208d6f4739134ce7e3e37c45be Mon Sep 17 00:00:00 2001 From: "Jagdish Panchal (Open ERP)" Date: Mon, 28 May 2012 17:31:17 +0530 Subject: [PATCH 019/349] [IMP] l10n_in: Improve code and use proper id name in l10n_in_partnership_private_chart.xml bzr revid: jap@tinyerp.com-20120528120117-iinpi1vuh2v71dvt --- addons/l10n_in/account_multi_chart_wizard.py | 46 +- .../account_multi_chart_wizard_view.xml | 14 +- addons/l10n_in/account_tax_code_template.xml | 2 +- addons/l10n_in/installer.py | 26 +- addons/l10n_in/installer_view.xml | 1 + addons/l10n_in/l10n_in_chart.xml | 447 ------------------ .../l10n_in_partnership_private_chart.xml | 166 +++---- addons/l10n_in/l10n_in_public_firm_chart.xml | 2 +- addons/l10n_in/l10n_in_wizard.xml | 1 + addons/l10n_in/tax/private_exice_duty.xml | 2 +- addons/l10n_in/tax/private_service.xml | 2 +- addons/l10n_in/tax/private_vat.xml | 2 +- addons/l10n_in/tax/privete_sale_tax.xml | 2 +- 13 files changed, 124 insertions(+), 589 deletions(-) delete mode 100644 addons/l10n_in/l10n_in_chart.xml diff --git a/addons/l10n_in/account_multi_chart_wizard.py b/addons/l10n_in/account_multi_chart_wizard.py index 4fbe1fa2cc5..058c2a41617 100644 --- a/addons/l10n_in/account_multi_chart_wizard.py +++ b/addons/l10n_in/account_multi_chart_wizard.py @@ -18,28 +18,25 @@ # along with this program. If not, see . # ############################################################################## -from lxml import etree + from osv import fields, osv from os.path import join as opj import tools - class account_multi_charts_wizard(osv.osv_memory): _inherit ='wizard.multi.charts.accounts' _columns = { - 'sales_tax': fields.boolean('Sales Tax', help='If this field is true it allows you use Sales Tax'), - 'vat': fields.boolean('VAT',help='If this field is true it allows you use VAT'), - 'service_tax': fields.boolean('Service Tax', help='If this field is true it allows you use Service tax'), - 'excise_duty': fields.boolean('Excise Duty', help='If this field is true it allows you use Excise duty'), - 'is_indian_chart': fields.boolean('Flag') + 'sales_tax': fields.boolean('Sales Tax', help='If this field is true it allows you install Sales Tax'), + 'vat': fields.boolean('VAT', help='If this field is true it allows install use VAT'), + 'service_tax': fields.boolean('Service Tax', help='If this field is true it allows you install Service tax'), + 'excise_duty': fields.boolean('Excise Duty', help='If this field is true it allows you install Excise duty'), + 'is_indian_chart': fields.boolean('Indian Chart?') } def onchange_chart_template_id(self, cr, uid, ids, chart_template_id=False, context=None): - res = super(account_multi_charts_wizard, self).onchange_chart_template_id(cr, uid, ids, chart_template_id, context) - tax_templ_obj = self.pool.get('account.tax.template') - res['value'] = {'complete_tax_set': False, 'sale_tax': False, 'purchase_tax': False} + res = super(account_multi_charts_wizard, self).onchange_chart_template_id(cr, uid, ids, chart_template_id, context=context) data = self.pool.get('account.chart.template').browse(cr, uid, chart_template_id, context=context) - if data.name in ('India - Chart of Accounts for Public Firm','India - Chart of Accounts for Partnership/Private Firm'): + if data.name in ('India - Chart of Accounts for Public Firm', 'India - Chart of Accounts for Partnership/Private Firm'): res['value'].update({'is_indian_chart': True}) else: res['value'].update({'is_indian_chart': False}) @@ -50,42 +47,43 @@ class account_multi_charts_wizard(osv.osv_memory): return res def execute(self, cr, uid, ids, context=None): - obj_multi = self.browse(cr, uid, ids[0]) - if obj_multi.chart_template_id.name == 'India - Chart of Accounts for Public Firm': - if obj_multi.sales_tax: + multichart_data = self.browse(cr, uid, ids[0], context=context) + if multichart_data.chart_template_id.name == 'India - Chart of Accounts for Public Firm': + if multichart_data.sales_tax: path = tools.file_open(opj('l10n_in', 'tax', 'public_firm_sales_tax.xml')) tools.convert_xml_import(cr, 'l10n_in', path, {}, 'init', True, None) path.close() - if obj_multi.vat: + if multichart_data.vat: path = tools.file_open(opj('l10n_in', 'tax', 'public_firm_vat.xml')) tools.convert_xml_import(cr, 'l10n_in', path, {}, 'init', True, None) path.close() - if obj_multi.service_tax: + if multichart_data.service_tax: path = tools.file_open(opj('l10n_in', 'tax', 'public_firm_service.xml')) tools.convert_xml_import(cr, 'l10n_in', path, {}, 'init', True, None) path.close() - if obj_multi.excise_duty: + if multichart_data.excise_duty: path = tools.file_open(opj('l10n_in', 'tax', 'public_firm_excise_duty.xml')) tools.convert_xml_import(cr, 'l10n_in', path, {}, 'init', True, None) path.close() - elif obj_multi.chart_template_id.name == 'India - Chart of Accounts for Partnership/Private Firm': - if obj_multi.sales_tax: + elif multichart_data.chart_template_id.name == 'India - Chart of Accounts for Partnership/Private Firm': + if multichart_data.sales_tax: path = tools.file_open(opj('l10n_in', 'tax', 'privete_sale_tax.xml')) tools.convert_xml_import(cr, 'l10n_in', path, {}, 'init', True, None) path.close() - if obj_multi.vat: + if multichart_data.vat: path = tools.file_open(opj('l10n_in', 'tax', 'private_vat.xml')) tools.convert_xml_import(cr, 'l10n_in', path, {}, 'init', True, None) path.close() - if obj_multi.service_tax: + if multichart_data.service_tax: path = tools.file_open(opj('l10n_in', 'tax', 'private_service.xml')) tools.convert_xml_import(cr, 'l10n_in', path, {}, 'init', True, None) path.close() - if obj_multi.excise_duty: + if multichart_data.excise_duty: path = tools.file_open(opj('l10n_in', 'tax', 'private_exice_duty.xml')) tools.convert_xml_import(cr, 'l10n_in', path, {}, 'init', True, None) - path.close() - return super(account_multi_charts_wizard, self).execute(cr, uid, ids, context) + path.close() + res = super(account_multi_charts_wizard, self).execute(cr, uid, ids, context=context) + return res account_multi_charts_wizard() diff --git a/addons/l10n_in/account_multi_chart_wizard_view.xml b/addons/l10n_in/account_multi_chart_wizard_view.xml index 4851392748f..899d81fc65b 100644 --- a/addons/l10n_in/account_multi_chart_wizard_view.xml +++ b/addons/l10n_in/account_multi_chart_wizard_view.xml @@ -1,7 +1,6 @@ + - - Generate Chart of Accounts from a Chart Template wizard.multi.charts.accounts @@ -9,12 +8,13 @@ - - - - - + + + + + + diff --git a/addons/l10n_in/account_tax_code_template.xml b/addons/l10n_in/account_tax_code_template.xml index 0677ab6dfa6..1d8e5ed3b70 100644 --- a/addons/l10n_in/account_tax_code_template.xml +++ b/addons/l10n_in/account_tax_code_template.xml @@ -1,4 +1,4 @@ - + diff --git a/addons/l10n_in/installer.py b/addons/l10n_in/installer.py index b189a061da4..e9e4157a23f 100644 --- a/addons/l10n_in/installer.py +++ b/addons/l10n_in/installer.py @@ -18,9 +18,9 @@ # along with this program. If not, see . # ############################################################################## + from osv import fields, osv from os.path import join as opj -import netsvc import tools class l10n_installer(osv.osv_memory): @@ -35,9 +35,9 @@ class l10n_installer(osv.osv_memory): } def execute_simple(self, cr, uid, ids, context=None): + res = super(l10n_installer, self).execute_simple(cr, uid, ids, context=context) if context is None: context = {} - fy_obj = self.pool.get('account.fiscalyear') for res in self.read(cr, uid, ids, context=context): if res['charts'] =='l10n_in' and res['company_type']=='public_company': path = tools.file_open(opj('l10n_in', 'l10n_in_public_firm_chart.xml')) @@ -46,25 +46,7 @@ class l10n_installer(osv.osv_memory): if res['charts'] =='l10n_in' and res['company_type']=='partnership_private_company': path = tools.file_open(opj('l10n_in', 'l10n_in_partnership_private_chart.xml')) tools.convert_xml_import(cr, 'l10n_in', path, {}, 'init', True, None) - path.close() - if 'date_start' in res and 'date_stop' in res: - f_ids = fy_obj.search(cr, uid, [('date_start', '<=', res['date_start']), ('date_stop', '>=', res['date_stop']), ('company_id', '=', res['company_id'][0])], context=context) - if not f_ids: - name = code = res['date_start'][:4] - if int(name) != int(res['date_stop'][:4]): - name = res['date_start'][:4] +'-'+ res['date_stop'][:4] - code = res['date_start'][2:4] +'-'+ res['date_stop'][2:4] - vals = { - 'name': name, - 'code': code, - 'date_start': res['date_start'], - 'date_stop': res['date_stop'], - 'company_id': res['company_id'][0] - } - fiscal_id = fy_obj.create(cr, uid, vals, context=context) - if res['period'] == 'month': - fy_obj.create_period(cr, uid, [fiscal_id]) - elif res['period'] == '3months': - fy_obj.create_period3(cr, uid, [fiscal_id]) + path.close() + return res # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/addons/l10n_in/installer_view.xml b/addons/l10n_in/installer_view.xml index cfac5ed8513..63dbe44eabd 100644 --- a/addons/l10n_in/installer_view.xml +++ b/addons/l10n_in/installer_view.xml @@ -1,3 +1,4 @@ + diff --git a/addons/l10n_in/l10n_in_chart.xml b/addons/l10n_in/l10n_in_chart.xml deleted file mode 100644 index d18d2b801e0..00000000000 --- a/addons/l10n_in/l10n_in_chart.xml +++ /dev/null @@ -1,447 +0,0 @@ - - - - - - - - Indian Chart of Account - 0 - view - - - - - - Balance Sheet - IA_AC0 - view - - - - - - - Assets - IA_AC01 - view - - - - - - - Current Assets - IA_AC011 - view - - - - - - - Bank Account - IA_AC0111 - liquidity - - - - - - - Cash In Hand Account - IA_AC0112 - view - - - - - - - Cash Account - IA_AC01121 - view - - - - - - - Deposit Account - IA_AC0113 - other - - - - - - - Loan & Advance(Assets) Account - IA_AC0114 - other - - - - - - - Total Sundry Debtors Account - IA_AC0116 - view - - - - - - - Sundry Debtors Account - IA_AC01161 - receivable - - - - - - - Fixed Assets - IA_AC012 - other - - - - - - - Investment - IA_AC013 - other - - - - - - - Misc. Expenses(Asset) - IA_AC014 - other - - - - - - - Liabilities - IA_AC02 - view - - - - - - - Current Liabilities - IA_AC021 - view - - - - - - - Duties & Taxes - IA_AC0211 - other - - - - - - - Provision - IA_AC0212 - other - - - - - - - Total Sundry Creditors - IA_AC0213 - view - - - - - - - Sundry Creditors Account - IA_AC02131 - payable - - - - - - - Branch/Division - IA_AC022 - other - - - - - - - Share Holder/Owner Fund - IA_AC023 - view - - - - - - - Capital Account - IA_AC0231 - other - - - - - - - Reserve and Profit/Loss Account - IA_AC0232 - other - - - - - - - Loan(Liability) Account - IA_AC024 - view - - - - - - - Bank OD Account - IA_AC0241 - other - - - - - - - Secured Loan Account - IA_AC0242 - other - - - - - - - Unsecured Loan Account - IA_AC0243 - other - - - - - - - Suspense Account - IA_AC025 - other - - - - - - - - Profit And Loss Account - IA_AC1 - view - - - - - - - Expense - IA_AC11 - view - - - - - - - Direct Expenses - IA_AC111 - other - - - - - - - Indirect Expenses - IA_AC112 - other - - - - - - - Purchase - IA_AC113 - other - - - - - - - Opening Stock - IA_AC114 - other - - - - - - Salary Expenses - IA_AC115 - other - - - - - - - - Income - IA_AC12 - view - - - - - - - Direct Incomes - IA_AC121 - other - - - - - - - Indirect Incomes - IA_AC122 - other - - - - - - - Sales Account - IA_AC123 - other - - - - - - Goods Given Account - IA_AC124 - other - - - - - - - - - Tax - - - - Tax Balance to Pay - - - - - Tax Due (Tax to pay) - - - - - Tax Payable - - - - - Tax Bases - - - - - - Base of Taxed Sales - - - - - - Base of Taxed Purchases - - - - - OPJ - Opening Journal - situation - - - - - India - Chart of Accounts - - - - - - - - - - - - - diff --git a/addons/l10n_in/l10n_in_partnership_private_chart.xml b/addons/l10n_in/l10n_in_partnership_private_chart.xml index f5185d85426..6e2a764d64f 100644 --- a/addons/l10n_in/l10n_in_partnership_private_chart.xml +++ b/addons/l10n_in/l10n_in_partnership_private_chart.xml @@ -1,4 +1,4 @@ - + @@ -13,7 +13,7 @@ - + Balance Sheet 1 view @@ -24,183 +24,183 @@ - + Assets 10 view - + - + Cash 101 liquidity - + Checking account balance (as shown in company records), currency, coins, checks received from customers but not yet deposited. - + Accounts Receivable 120 receivable - + Amounts owed to the company for services performed or products sold but not yet paid for. - + Merchandise Inventory 140 other - + Cost of merchandise purchased but has not yet been sold. - + Supplies 150 other - + Cost of supplies that have not yet been used. Supplies that have been used are recorded in Supplies Expense. - + Prepaid Insurance 160 other - + Cost of insurance that is paid in advance and includes a future accounting period. - + Land 170 other - + Cost to acquire and prepare land for use by the company. - + Buildings 175 other - + Cost to purchase or construct buildings for use by the company. - + Accumulated Depreciation - Buildings 178 other - + Amount of the buildings' cost that has been allocated to Depreciation Expense since the time the building was acquired. - + Equipment 180 other - + Cost to acquire and prepare equipment for use by the company. - + Accumulated Depreciation - Equipment 188 other - + Amount of equipment's cost that has been allocated to Depreciation Expense since the time the equipment was acquired. - + Liabilities 20 view - + - + Notes Payable 210 other - + The amount of principal due on a formal written promise to pay. Loans from banks are included in this account. - + Accounts Payable 215 payable - + Amount owed to suppliers who provided goods and services to the company but did not require immediate payment in cash. - + Wages Payable 220 other - + Amount owed to employees for hours worked but not yet paid. - + Interest Payable 230 other - + Amount owed for interest on Notes Payable up until the date of the balance sheet. This is computed by multiplying the amount of the note times the effective interest rate times the time period. - + Unearned Revenues 240 other - + Amounts received in advance of delivering goods or providing services. When the goods are delivered or services are provided, this liability amount decreases. - + Mortgage Loan Payable 250 other - + A formal loan that involves a lien on real estate until the loan is repaid. @@ -212,7 +212,7 @@ view - + - + Profit And Loss 3 view @@ -248,186 +248,186 @@ - + Income 30 view - + - + Operating Revenue Accounts 31 view - + - + Service Revenues 310 other - + Amounts earned from providing services to clients, either for cash or on credit. When a service is provided on credit, both this account and Accounts Receivable will increase. When a service is provided for immediate cash, both this account and Cash will increase. - + Product Sales 311 other - + Sales of product account - + Non-Operating Revenue and Gains 80 view - + - + Interest Revenues 810 other - + Interest and dividends earned on bank accounts, investments or notes receivable. This account is increased when the interest is earned and either Cash or Interest Receivable is also increased. - + Gain on Sale of Assets 811 other - + Occurs when the company sells one of its assets (other than inventory) for more than the asset's book value. - + Expense 50 view - + - + Operating Expense Accounts 51 view - + - + Salaries Expense 500 other - + Expenses incurred for the work performed by salaried employees during the accounting period. These employees normally receive a fixed amount on a weekly, monthly, or annual basis. - + Wages Expense 510 other - + Expenses incurred for the work performed by non-salaried employees during the accounting period. These employees receive an hourly rate of pay. - + Supplies Expense 540 other - + Cost of supplies used up during the accounting period. - + Rent Expense 560 other - + Cost of occupying rented facilities during the accounting period. - + Utilities Expense 570 other - + Costs for electricity, heat, water, and sewer that were used during the accounting period. - + Telephone Expense 576 other - + Cost of telephone used during the current accounting period. - + Advertising Expense 610 other - + Costs incurred by the company during the accounting period for ads, promotions, and other selling and expenses (other than salaries). - + Depreciation Expense 750 other - + Cost of long-term assets allocated to expense during the current accounting period. - + Non-Operating Expenses and Losses 90 view - + @@ -436,7 +436,7 @@ other - + Occurs when the company sells one of its assets (other than inventory) for less than the asset's book value. @@ -446,12 +446,12 @@ India - Chart of Accounts for Partnership/Private Firm - - - - - - + + + + + + diff --git a/addons/l10n_in/l10n_in_public_firm_chart.xml b/addons/l10n_in/l10n_in_public_firm_chart.xml index 8e84d9b8d79..9e72ec9569c 100644 --- a/addons/l10n_in/l10n_in_public_firm_chart.xml +++ b/addons/l10n_in/l10n_in_public_firm_chart.xml @@ -1,4 +1,4 @@ - + diff --git a/addons/l10n_in/l10n_in_wizard.xml b/addons/l10n_in/l10n_in_wizard.xml index 17bd975d140..19d7df181f7 100644 --- a/addons/l10n_in/l10n_in_wizard.xml +++ b/addons/l10n_in/l10n_in_wizard.xml @@ -1,3 +1,4 @@ + diff --git a/addons/l10n_in/tax/private_exice_duty.xml b/addons/l10n_in/tax/private_exice_duty.xml index 568d480eb86..14f4636cf32 100644 --- a/addons/l10n_in/tax/private_exice_duty.xml +++ b/addons/l10n_in/tax/private_exice_duty.xml @@ -9,7 +9,7 @@ payable - + diff --git a/addons/l10n_in/tax/private_service.xml b/addons/l10n_in/tax/private_service.xml index 1ce8cbfe74c..1a36cf4cc0f 100644 --- a/addons/l10n_in/tax/private_service.xml +++ b/addons/l10n_in/tax/private_service.xml @@ -9,7 +9,7 @@ payable - + diff --git a/addons/l10n_in/tax/private_vat.xml b/addons/l10n_in/tax/private_vat.xml index d717201b577..9f917a329f0 100644 --- a/addons/l10n_in/tax/private_vat.xml +++ b/addons/l10n_in/tax/private_vat.xml @@ -9,7 +9,7 @@ payable - + diff --git a/addons/l10n_in/tax/privete_sale_tax.xml b/addons/l10n_in/tax/privete_sale_tax.xml index dc89d3d3fee..a221ff1317b 100644 --- a/addons/l10n_in/tax/privete_sale_tax.xml +++ b/addons/l10n_in/tax/privete_sale_tax.xml @@ -9,7 +9,7 @@ payable - + From 29b1abbe04b5e98d891d08a76c093dd6778fc871 Mon Sep 17 00:00:00 2001 From: "Jagdish Panchal (Open ERP)" Date: Sat, 2 Jun 2012 17:36:56 +0530 Subject: [PATCH 020/349] [IMP] l10n_in: Improve code for Create template tax from Install chart of account wizard added new tax template xml file bzr revid: jap@tinyerp.com-20120602120656-4a2itir1joo10x3d --- addons/l10n_in/account_multi_chart_wizard.py | 91 ++++--- addons/l10n_in/installer.py | 25 +- .../l10n_in_private_firm_tax_template.xml | 224 +++++++++++++++++ .../l10n_in_public_firm_tax_template.xml | 231 ++++++++++++++++++ addons/l10n_in/tax/private_exice_duty.xml | 60 ----- addons/l10n_in/tax/private_service.xml | 57 ----- addons/l10n_in/tax/private_vat.xml | 101 -------- addons/l10n_in/tax/privete_sale_tax.xml | 58 ----- .../l10n_in/tax/public_firm_excise_duty.xml | 57 ----- addons/l10n_in/tax/public_firm_sales_tax.xml | 48 ---- addons/l10n_in/tax/public_firm_service.xml | 58 ----- addons/l10n_in/tax/public_firm_vat.xml | 99 -------- 12 files changed, 523 insertions(+), 586 deletions(-) create mode 100644 addons/l10n_in/l10n_in_private_firm_tax_template.xml create mode 100644 addons/l10n_in/l10n_in_public_firm_tax_template.xml delete mode 100644 addons/l10n_in/tax/private_exice_duty.xml delete mode 100644 addons/l10n_in/tax/private_service.xml delete mode 100644 addons/l10n_in/tax/private_vat.xml delete mode 100644 addons/l10n_in/tax/privete_sale_tax.xml delete mode 100644 addons/l10n_in/tax/public_firm_excise_duty.xml delete mode 100644 addons/l10n_in/tax/public_firm_sales_tax.xml delete mode 100644 addons/l10n_in/tax/public_firm_service.xml delete mode 100644 addons/l10n_in/tax/public_firm_vat.xml diff --git a/addons/l10n_in/account_multi_chart_wizard.py b/addons/l10n_in/account_multi_chart_wizard.py index 058c2a41617..b9c242312a6 100644 --- a/addons/l10n_in/account_multi_chart_wizard.py +++ b/addons/l10n_in/account_multi_chart_wizard.py @@ -18,7 +18,7 @@ # along with this program. If not, see . # ############################################################################## - +from tools.translate import _ from osv import fields, osv from os.path import join as opj import tools @@ -45,45 +45,56 @@ class account_multi_charts_wizard(osv.osv_memory): elif data.name == 'India - Chart of Accounts for Partnership/Private Firm': res['value'].update({'sales_tax': True,'vat':True}) return res - - def execute(self, cr, uid, ids, context=None): - multichart_data = self.browse(cr, uid, ids[0], context=context) - if multichart_data.chart_template_id.name == 'India - Chart of Accounts for Public Firm': - if multichart_data.sales_tax: - path = tools.file_open(opj('l10n_in', 'tax', 'public_firm_sales_tax.xml')) - tools.convert_xml_import(cr, 'l10n_in', path, {}, 'init', True, None) - path.close() - if multichart_data.vat: - path = tools.file_open(opj('l10n_in', 'tax', 'public_firm_vat.xml')) - tools.convert_xml_import(cr, 'l10n_in', path, {}, 'init', True, None) - path.close() - if multichart_data.service_tax: - path = tools.file_open(opj('l10n_in', 'tax', 'public_firm_service.xml')) - tools.convert_xml_import(cr, 'l10n_in', path, {}, 'init', True, None) - path.close() - if multichart_data.excise_duty: - path = tools.file_open(opj('l10n_in', 'tax', 'public_firm_excise_duty.xml')) - tools.convert_xml_import(cr, 'l10n_in', path, {}, 'init', True, None) - path.close() - elif multichart_data.chart_template_id.name == 'India - Chart of Accounts for Partnership/Private Firm': - if multichart_data.sales_tax: - path = tools.file_open(opj('l10n_in', 'tax', 'privete_sale_tax.xml')) - tools.convert_xml_import(cr, 'l10n_in', path, {}, 'init', True, None) - path.close() - if multichart_data.vat: - path = tools.file_open(opj('l10n_in', 'tax', 'private_vat.xml')) - tools.convert_xml_import(cr, 'l10n_in', path, {}, 'init', True, None) - path.close() - if multichart_data.service_tax: - path = tools.file_open(opj('l10n_in', 'tax', 'private_service.xml')) - tools.convert_xml_import(cr, 'l10n_in', path, {}, 'init', True, None) - path.close() - if multichart_data.excise_duty: - path = tools.file_open(opj('l10n_in', 'tax', 'private_exice_duty.xml')) - tools.convert_xml_import(cr, 'l10n_in', path, {}, 'init', True, None) - path.close() - res = super(account_multi_charts_wizard, self).execute(cr, uid, ids, context=context) - return res + + def _load_template(self, cr, uid, template_id, company_id, code_digits=None, obj_wizard=None, account_ref={}, taxes_ref={}, tax_code_ref={}, context=None): + res = super(account_multi_charts_wizard, self)._load_template(cr, uid, template_id, company_id, code_digits, obj_wizard, account_ref, taxes_ref, tax_code_ref, context=context) + template = self.pool.get('account.chart.template').browse(cr, uid, template_id, context=context) + obj_tax_code_template = self.pool.get('account.tax.code.template') + obj_tax_temp = self.pool.get('account.tax.template') + obj_tax = self.pool.get('account.tax') + tax_code_ref.update(obj_tax_code_template.generate_tax_code(cr, uid, template.tax_code_root_id.id, company_id, context=context)) + if obj_wizard.sales_tax == False and obj_wizard.excise_duty == False and obj_wizard.vat == False and obj_wizard.service_tax == False: + raise osv.except_osv(_('Error !'), _('Select Tax to Install')) + # Unlink the Tax for current company + tax_ids = obj_tax.search(cr, uid, [('company_id','=',company_id)], context=context) + obj_tax.unlink(cr, uid, tax_ids, context=context) + #Create new Tax as per selected from wizard + if obj_wizard.chart_template_id.name == 'India - Chart of Accounts for Public Firm': + if obj_wizard.sales_tax: + tax_temp_ids = obj_tax_temp.search(cr, uid, [('name','in',['Sale Tax - 15%','Sale Tax - 12%']),('chart_template_id','=',obj_wizard.chart_template_id.id)], context=context) + tax_temp_data = obj_tax_temp.browse(cr, uid, tax_temp_ids, context=context) + taxes_ref = obj_tax_temp._generate_tax(cr, uid, tax_temp_data, tax_code_ref, company_id, context=context) + if obj_wizard.vat: + tax_temp_ids = obj_tax_temp.search(cr, uid, [('name','in',['VAT - 5%','VAT - 15%','VAT - 8%']),('chart_template_id','=',obj_wizard.chart_template_id.id)], context=context) + tax_temp_data = obj_tax_temp.browse(cr, uid, tax_temp_ids, context=context) + taxes_ref = obj_tax_temp._generate_tax(cr, uid, tax_temp_data, tax_code_ref, company_id, context=context) + if obj_wizard.service_tax: + tax_temp_ids = obj_tax_temp.search(cr, uid, [('name','in',['Service Tax','Service Tax - %2','Service Tax - %1']),('chart_template_id','=',obj_wizard.chart_template_id.id)], context=context) + tax_temp_data = obj_tax_temp.browse(cr, uid, tax_temp_ids, context=context) + taxes_ref = obj_tax_temp._generate_tax(cr, uid, tax_temp_data, tax_code_ref, company_id, context=context) + if obj_wizard.excise_duty: + tax_temp_ids = obj_tax_temp.search(cr, uid, [('name','in',['Excise Duty','Excise Duty - %2','Excise Duty - 1%']),('chart_template_id','=',obj_wizard.chart_template_id.id)], context=context) + tax_temp_data = obj_tax_temp.browse(cr, uid, tax_temp_ids, context=context) + taxes_ref = obj_tax_temp._generate_tax(cr, uid, tax_temp_data, tax_code_ref, company_id, context=context) + + elif obj_wizard.chart_template_id.name == 'India - Chart of Accounts for Partnership/Private Firm': + if obj_wizard.sales_tax: + tax_temp_ids = obj_tax_temp.search(cr, uid, [('name','in',['Sale Tax - 15%','Sale Tax - 12%']),('chart_template_id','=',obj_wizard.chart_template_id.id)], context=context) + tax_temp_data = obj_tax_temp.browse(cr, uid, tax_temp_ids, context=context) + taxes_ref = obj_tax_temp._generate_tax(cr, uid, tax_temp_data, tax_code_ref, company_id, context=context) + if obj_wizard.vat: + tax_temp_ids = obj_tax_temp.search(cr, uid, [('name','in',['VAT - 5%','VAT - 15%','VAT - 8%']),('chart_template_id','=',obj_wizard.chart_template_id.id)], context=context) + tax_temp_data = obj_tax_temp.browse(cr, uid, tax_temp_ids, context=context) + taxes_ref = obj_tax_temp._generate_tax(cr, uid, tax_temp_data, tax_code_ref, company_id, context=context) + if obj_wizard.service_tax: + tax_temp_ids = obj_tax_temp.search(cr, uid, [('name','in',['Service Tax', 'Service Tax - %2', 'Service Tax - %1']),('chart_template_id','=',obj_wizard.chart_template_id.id)], context=context) + tax_temp_data = obj_tax_temp.browse(cr, uid, tax_temp_ids, context=context) + taxes_ref = obj_tax_temp._generate_tax(cr, uid, tax_temp_data, tax_code_ref, company_id, context=context) + if obj_wizard.excise_duty: + tax_temp_ids = obj_tax_temp.search(cr, uid, [('name','in',['Excise Duty', 'Excise Duty - %2', 'Excise Duty - 1%']),('chart_template_id','=',obj_wizard.chart_template_id.id)], context=context) + tax_temp_data = obj_tax_temp.browse(cr, uid, tax_temp_ids, context=context) + taxes_ref = obj_tax_temp._generate_tax(cr, uid, tax_temp_data, tax_code_ref, company_id, context=context) + return account_ref, taxes_ref, tax_code_ref account_multi_charts_wizard() diff --git a/addons/l10n_in/installer.py b/addons/l10n_in/installer.py index e9e4157a23f..2d9a2a3d39b 100644 --- a/addons/l10n_in/installer.py +++ b/addons/l10n_in/installer.py @@ -27,9 +27,9 @@ class l10n_installer(osv.osv_memory): _inherit = 'account.installer' _columns = { 'company_type':fields.selection([('partnership_private_company', 'Partnership/Private Firm'), - ('public_company', 'Public Firm')], 'Company Type', required=True), + ('public_company', 'Public Firm')], 'Company Type', required=True, + help='Select your company Type according to your need to install account chart'), } - _defaults = { 'company_type': 'public_company', } @@ -40,13 +40,22 @@ class l10n_installer(osv.osv_memory): context = {} for res in self.read(cr, uid, ids, context=context): if res['charts'] =='l10n_in' and res['company_type']=='public_company': - path = tools.file_open(opj('l10n_in', 'l10n_in_public_firm_chart.xml')) - tools.convert_xml_import(cr, 'l10n_in', path, {}, 'init', True, None) - path.close() + acc_file_path = tools.file_open(opj('l10n_in', 'l10n_in_public_firm_chart.xml')) + tools.convert_xml_import(cr, 'l10n_in', acc_file_path, {}, 'init', True, None) + acc_file_path.close() + + tax_file_path = tools.file_open(opj('l10n_in', 'l10n_in_public_firm_tax_template.xml')) + tools.convert_xml_import(cr, 'l10n_in', tax_file_path, {}, 'init', True, None) + tax_file_path.close() + if res['charts'] =='l10n_in' and res['company_type']=='partnership_private_company': - path = tools.file_open(opj('l10n_in', 'l10n_in_partnership_private_chart.xml')) - tools.convert_xml_import(cr, 'l10n_in', path, {}, 'init', True, None) - path.close() + acc_file_path = tools.file_open(opj('l10n_in', 'l10n_in_partnership_private_chart.xml')) + tools.convert_xml_import(cr, 'l10n_in', acc_file_path, {}, 'init', True, None) + acc_file_path.close() + + tax_file_path = tools.file_open(opj('l10n_in', 'l10n_in_private_firm_tax_template.xml')) + tools.convert_xml_import(cr, 'l10n_in', tax_file_path, {}, 'init', True, None) + tax_file_path.close() return res # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/addons/l10n_in/l10n_in_private_firm_tax_template.xml b/addons/l10n_in/l10n_in_private_firm_tax_template.xml new file mode 100644 index 00000000000..564eb41fdfd --- /dev/null +++ b/addons/l10n_in/l10n_in_private_firm_tax_template.xml @@ -0,0 +1,224 @@ + + + + + + + + Sales Tax Payable + 216 + payable + + + + + + + VAT Payable + 217 + payable + + + + + + + Service Tax Payable + 218 + payable + + + + + + + Exice Duty Payable + 219 + payable + + + + + + + + + Sale Tax - 15% + Sale Tax - 15% + + 0.15 + percent + sale + + + + + + + + + + + + Sale Tax -12% + Sale Tax - 12% + + 0.12 + percent + sale + + + + + + + + + + + + + + VAT - 5% + VAT - 5% + + 0.05 + percent + all + + + + 1 + + 1 + + 1 + + 1 + + + + + + VAT - 15% + VAT - 15% + + 0.15 + percent + all + + + + 1 + + 1 + + 1 + + 1 + + + + + + VAT - 8% + VAT - 8% + + 0.8 + percent + all + + + + + + + + + + + + + + Exice Duty - 10.30% + Excise Duty + + 0.10 + percent + sale + + + + 1 + + 1 + + 1 + + 1 + + + + + + Excise duty -10% -%2 + Excise Duty - %2 + 0.02 + percent + sale + + + + + + Excise duty - 10% - %1 + Excise Duty - 1% + 0.01 + percent + sale + + + + + + + + all + Service - 12% + Service Tax + + 0.12 + percent + + + + + + + + + + + + Service - 12% - %2 + Service Tax - %2 + 0.02 + percent + all + + + + + + Service - 12% - 1% + Service Tax - %1 + 0.01 + percent + all + + + + + + \ No newline at end of file diff --git a/addons/l10n_in/l10n_in_public_firm_tax_template.xml b/addons/l10n_in/l10n_in_public_firm_tax_template.xml new file mode 100644 index 00000000000..6dd08be944b --- /dev/null +++ b/addons/l10n_in/l10n_in_public_firm_tax_template.xml @@ -0,0 +1,231 @@ + + + + + + + + + Sales Tax Payable + 24600 + payable + + + + + + + VAT Payable + 24800 + payable + + + + + + + Exice Duty Payable + 24900 + payable + + + + + + + Service Tax Payable + 24700 + payable + + + + + + + + + + Sale Tax - 15% + Sale Tax - 15% + + + + 0.15 + percent + sale + + + + + + + + + Sale Tax - 12% + Sale Tax - 12% + + + + 0.12 + percent + sale + + + + + + + + + + + VAT - 5% + VAT - 5% + + + + 0.05 + percent + all + + 1 + + 1 + + 1 + + 1 + + + + + + VAT - 15% + VAT - 15% + + + + 0.15 + percent + all + + 1 + + 1 + + 1 + + 1 + + + + + + VAT - 8% + VAT - 8% + + + + 0.08 + percent + all + + 1 + + 1 + + 1 + + 1 + + + + + + + + Service - 12% + Service Tax + + + + 0.12 + percent + all + + 1 + + 1 + + 1 + + 1 + + + + + + Service - 12% - 2% + Service Tax - %2 + 0.02 + percent + all + + + + + + Service - 12% - 1% + Service Tax - %1 + 0.01 + percent + all + + + + + + + + Excise duty - 10% + Excise Duty + + + + 0.10 + percent + sale + + 1 + + 1 + + 1 + + 1 + + + + + + Excise duty - 10% - 2% + Excise Duty - %2 + 0.02 + percent + sale + + + + + + Excise duty - 10% - 1% + Excise Duty - 1% + 0.01 + percent + sale + + + + + + \ No newline at end of file diff --git a/addons/l10n_in/tax/private_exice_duty.xml b/addons/l10n_in/tax/private_exice_duty.xml deleted file mode 100644 index 14f4636cf32..00000000000 --- a/addons/l10n_in/tax/private_exice_duty.xml +++ /dev/null @@ -1,60 +0,0 @@ - - - - - - - Exice Duty Payable - 219 - payable - - - - - - - Exice Duty - 10.30% - 10 - Exice Duty - - 0.10 - percent - sale - - - - 1 - - 1 - - 1 - - 1 - - - - - - 11 - Excise duty -10% -%2 - Excise duty - 2% - 0.02 - percent - sale - - - - - - 11 - Excise duty - 10% - %1 - Excise duty - 1% - 0.01 - percent - sale - - - - - - \ No newline at end of file diff --git a/addons/l10n_in/tax/private_service.xml b/addons/l10n_in/tax/private_service.xml deleted file mode 100644 index 1a36cf4cc0f..00000000000 --- a/addons/l10n_in/tax/private_service.xml +++ /dev/null @@ -1,57 +0,0 @@ - - - - - - - Service Tax Payable - 218 - payable - - - - - - - all - Service - 12% - Service - - 0.12 - percent - - - - 1 - - 1 - - 1 - - 1 - - - - - - Service - 12% - %2 - Service - 2% - 0.02 - percent - all - - - - - - Service - 12% - 1% - Service - 1% - 0.01 - percent - all - - - - - - \ No newline at end of file diff --git a/addons/l10n_in/tax/private_vat.xml b/addons/l10n_in/tax/private_vat.xml deleted file mode 100644 index 9f917a329f0..00000000000 --- a/addons/l10n_in/tax/private_vat.xml +++ /dev/null @@ -1,101 +0,0 @@ - - - - - - - VAT Payable - 217 - payable - - - - - - - 30 - VAT - 4% - VAT - - 0.04 - percent - all - - - - 1 - - 1 - - 1 - - 1 - - - - - - VAT - 4% - %1 - VAT - %1 - 0.01 - percent - all - - - - - - VAT - 12.5% - VAT - 12.5% - - 0.125 - percent - all - - - - 1 - - 1 - - 1 - - 1 - - - - - - VAT - 12.5%- %2.5 - VAT (%2.5) - 0.025 - percent - sale - - - - - - VAT - 8% - VAT - 8% - - 0.8 - percent - all - - - - 1 - - 1 - - 1 - - 1 - - - - - - - \ No newline at end of file diff --git a/addons/l10n_in/tax/privete_sale_tax.xml b/addons/l10n_in/tax/privete_sale_tax.xml deleted file mode 100644 index a221ff1317b..00000000000 --- a/addons/l10n_in/tax/privete_sale_tax.xml +++ /dev/null @@ -1,58 +0,0 @@ - - - - - - - Sales Tax Payable - 216 - payable - - - - - - - Sale Tax - 15% - Sale Tax - 15% - - 0.15 - percent - sale - - - - 1 - - 1 - - 1 - - 1 - - - - - - Sale Tax -12% - Sale Tax - 12% - - 0.12 - percent - sale - - - - 1 - - 1 - - 1 - - 1 - - - - - - \ No newline at end of file diff --git a/addons/l10n_in/tax/public_firm_excise_duty.xml b/addons/l10n_in/tax/public_firm_excise_duty.xml deleted file mode 100644 index 031c92307fd..00000000000 --- a/addons/l10n_in/tax/public_firm_excise_duty.xml +++ /dev/null @@ -1,57 +0,0 @@ - - - - - - - Exice Duty Payable - 24900 - payable - - - - - - - Excise duty - 10% - Excise duty - - - - 0.10 - percent - sale - - 1 - - 1 - - 1 - - 1 - - - - - - Excise duty - 10% - 2% - Excise duty - %2 - 0.02 - percent - sale - - - - - - Excise duty - 10% - 1% - Excise duty - 1% - 0.01 - percent - sale - - - - - - \ No newline at end of file diff --git a/addons/l10n_in/tax/public_firm_sales_tax.xml b/addons/l10n_in/tax/public_firm_sales_tax.xml deleted file mode 100644 index 27d768aba7a..00000000000 --- a/addons/l10n_in/tax/public_firm_sales_tax.xml +++ /dev/null @@ -1,48 +0,0 @@ - - - - - - - Sales Tax Payable - 24600 - payable - - - - - - - Sale Tax - 15% - Sale Tax - 15% - - - - 0.15 - percent - sale - - - - - - - - - Sale Tax - 12% - Sale Tax - 12% - - - - 0.12 - percent - sale - - - - - - - - - \ No newline at end of file diff --git a/addons/l10n_in/tax/public_firm_service.xml b/addons/l10n_in/tax/public_firm_service.xml deleted file mode 100644 index f57eee6796b..00000000000 --- a/addons/l10n_in/tax/public_firm_service.xml +++ /dev/null @@ -1,58 +0,0 @@ - - - - - - - Service Tax Payable - 24700 - payable - - - - - - - Service - 12% - Service - - - - 0.12 - percent - all - - 1 - - 1 - - 1 - - 1 - - - - - - Service - 12% - 2% - Service (%2) - 0.02 - percent - all - - - - - - Service - 12% - 1% - Service (%1) - 0.01 - percent - all - - - - - - - \ No newline at end of file diff --git a/addons/l10n_in/tax/public_firm_vat.xml b/addons/l10n_in/tax/public_firm_vat.xml deleted file mode 100644 index 9ffe2b9d9ca..00000000000 --- a/addons/l10n_in/tax/public_firm_vat.xml +++ /dev/null @@ -1,99 +0,0 @@ - - - - - - - VAT Payable - 24800 - payable - - - - - - - VAT - 4% - VAT - 4% - - - - 0.04 - percent - all - - 1 - - 1 - - 1 - - 1 - - - - - - VAT - 4% -1% - VAT - 1% - 0.01 - percent - all - - - - - - VAT - 12.5% - VAT - 12.5% - - - - 0.125 - percent - all - - 1 - - 1 - - 1 - - 1 - - - - - - VAT - 12.5% - %2.5 - VAT - 12.5% - %2.5 - 0.025 - percent - all - - - - - - VAT - 8% - VAT - 8% - - - - 0.08 - percent - all - - 1 - - 1 - - 1 - - 1 - - - - - - \ No newline at end of file From a7bfa42417a3047600b8357e53c4f8fdc1e0b92e Mon Sep 17 00:00:00 2001 From: "Jagdish Panchal (Open ERP)" Date: Mon, 4 Jun 2012 10:34:39 +0530 Subject: [PATCH 021/349] [IMP] l10n_in: Improve code in installer.py bzr revid: jap@tinyerp.com-20120604050439-sja8sl3j92co825d --- addons/l10n_in/installer.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/addons/l10n_in/installer.py b/addons/l10n_in/installer.py index 2d9a2a3d39b..23d03bfc87d 100644 --- a/addons/l10n_in/installer.py +++ b/addons/l10n_in/installer.py @@ -28,7 +28,7 @@ class l10n_installer(osv.osv_memory): _columns = { 'company_type':fields.selection([('partnership_private_company', 'Partnership/Private Firm'), ('public_company', 'Public Firm')], 'Company Type', required=True, - help='Select your company Type according to your need to install account chart'), + help='Select your company Type according to your need to install Chart Of Account'), } _defaults = { 'company_type': 'public_company', @@ -48,7 +48,7 @@ class l10n_installer(osv.osv_memory): tools.convert_xml_import(cr, 'l10n_in', tax_file_path, {}, 'init', True, None) tax_file_path.close() - if res['charts'] =='l10n_in' and res['company_type']=='partnership_private_company': + elif res['charts'] =='l10n_in' and res['company_type']=='partnership_private_company': acc_file_path = tools.file_open(opj('l10n_in', 'l10n_in_partnership_private_chart.xml')) tools.convert_xml_import(cr, 'l10n_in', acc_file_path, {}, 'init', True, None) acc_file_path.close() From 088e65bd0b044dc9fb148e8e80927f56d938dd84 Mon Sep 17 00:00:00 2001 From: "Jagdish Panchal (Open ERP)" Date: Tue, 5 Jun 2012 11:34:41 +0530 Subject: [PATCH 022/349] [IMP] l10n_in: Improve Usability and link account with tax bzr revid: jap@tinyerp.com-20120605060441-52p0hoksc2hr3ey6 --- addons/l10n_in/account_multi_chart_wizard.py | 46 +++++++++++++------ .../account_multi_chart_wizard_view.xml | 11 ++--- addons/l10n_in/installer.py | 2 +- .../l10n_in_private_firm_tax_template.xml | 36 +++++++-------- 4 files changed, 55 insertions(+), 40 deletions(-) diff --git a/addons/l10n_in/account_multi_chart_wizard.py b/addons/l10n_in/account_multi_chart_wizard.py index b9c242312a6..a7e018b2cdb 100644 --- a/addons/l10n_in/account_multi_chart_wizard.py +++ b/addons/l10n_in/account_multi_chart_wizard.py @@ -1,8 +1,8 @@ -# -*- encoding: utf-8 -*- +# -*- coding: utf-8 -*- ############################################################################## # -# Author: Nicolas Bessi. Copyright Camptocamp SA -# Donors: Hasa Sàrl, Open Net Sàrl and Prisme Solutions Informatique SA +# OpenERP, Open Source Business Applications +# Copyright (C) 2004-2012 OpenERP S.A. (). # # 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,7 +24,8 @@ from os.path import join as opj import tools class account_multi_charts_wizard(osv.osv_memory): - _inherit ='wizard.multi.charts.accounts' + _name = 'wizard.multi.charts.accounts' + _inherit = 'wizard.multi.charts.accounts' _columns = { 'sales_tax': fields.boolean('Sales Tax', help='If this field is true it allows you install Sales Tax'), 'vat': fields.boolean('VAT', help='If this field is true it allows install use VAT'), @@ -45,57 +46,72 @@ class account_multi_charts_wizard(osv.osv_memory): elif data.name == 'India - Chart of Accounts for Partnership/Private Firm': res['value'].update({'sales_tax': True,'vat':True}) return res - + def _load_template(self, cr, uid, template_id, company_id, code_digits=None, obj_wizard=None, account_ref={}, taxes_ref={}, tax_code_ref={}, context=None): res = super(account_multi_charts_wizard, self)._load_template(cr, uid, template_id, company_id, code_digits, obj_wizard, account_ref, taxes_ref, tax_code_ref, context=context) template = self.pool.get('account.chart.template').browse(cr, uid, template_id, context=context) - obj_tax_code_template = self.pool.get('account.tax.code.template') obj_tax_temp = self.pool.get('account.tax.template') obj_tax = self.pool.get('account.tax') - tax_code_ref.update(obj_tax_code_template.generate_tax_code(cr, uid, template.tax_code_root_id.id, company_id, context=context)) if obj_wizard.sales_tax == False and obj_wizard.excise_duty == False and obj_wizard.vat == False and obj_wizard.service_tax == False: raise osv.except_osv(_('Error !'), _('Select Tax to Install')) - # Unlink the Tax for current company - tax_ids = obj_tax.search(cr, uid, [('company_id','=',company_id)], context=context) - obj_tax.unlink(cr, uid, tax_ids, context=context) - #Create new Tax as per selected from wizard if obj_wizard.chart_template_id.name == 'India - Chart of Accounts for Public Firm': + # Unlink the Tax for current company + tax_ids = obj_tax.search(cr, uid, [('company_id','=',company_id)], context=context) + obj_tax.unlink(cr, uid, tax_ids, context=context) + #Create new Tax as per selected from wizard if obj_wizard.sales_tax: tax_temp_ids = obj_tax_temp.search(cr, uid, [('name','in',['Sale Tax - 15%','Sale Tax - 12%']),('chart_template_id','=',obj_wizard.chart_template_id.id)], context=context) tax_temp_data = obj_tax_temp.browse(cr, uid, tax_temp_ids, context=context) taxes_ref = obj_tax_temp._generate_tax(cr, uid, tax_temp_data, tax_code_ref, company_id, context=context) + self._tax_account(cr, uid, account_ref, taxes_ref, context=context) if obj_wizard.vat: tax_temp_ids = obj_tax_temp.search(cr, uid, [('name','in',['VAT - 5%','VAT - 15%','VAT - 8%']),('chart_template_id','=',obj_wizard.chart_template_id.id)], context=context) tax_temp_data = obj_tax_temp.browse(cr, uid, tax_temp_ids, context=context) taxes_ref = obj_tax_temp._generate_tax(cr, uid, tax_temp_data, tax_code_ref, company_id, context=context) + self._tax_account(cr, uid, account_ref, taxes_ref, context=context) if obj_wizard.service_tax: tax_temp_ids = obj_tax_temp.search(cr, uid, [('name','in',['Service Tax','Service Tax - %2','Service Tax - %1']),('chart_template_id','=',obj_wizard.chart_template_id.id)], context=context) tax_temp_data = obj_tax_temp.browse(cr, uid, tax_temp_ids, context=context) taxes_ref = obj_tax_temp._generate_tax(cr, uid, tax_temp_data, tax_code_ref, company_id, context=context) + self._tax_account(cr, uid, account_ref, taxes_ref, context=context) if obj_wizard.excise_duty: tax_temp_ids = obj_tax_temp.search(cr, uid, [('name','in',['Excise Duty','Excise Duty - %2','Excise Duty - 1%']),('chart_template_id','=',obj_wizard.chart_template_id.id)], context=context) tax_temp_data = obj_tax_temp.browse(cr, uid, tax_temp_ids, context=context) - taxes_ref = obj_tax_temp._generate_tax(cr, uid, tax_temp_data, tax_code_ref, company_id, context=context) - + taxes_ref = obj_tax_temp._generate_tax(cr, uid, tax_temp_data, tax_code_ref, company_id, context=context) + self._tax_account(cr, uid, account_ref, taxes_ref, context=context) elif obj_wizard.chart_template_id.name == 'India - Chart of Accounts for Partnership/Private Firm': + # Unlink the Tax for current company + tax_ids = obj_tax.search(cr, uid, [('company_id','=',company_id)], context=context) + obj_tax.unlink(cr, uid, tax_ids, context=context) + #Create new Tax as per selected from wizard if obj_wizard.sales_tax: tax_temp_ids = obj_tax_temp.search(cr, uid, [('name','in',['Sale Tax - 15%','Sale Tax - 12%']),('chart_template_id','=',obj_wizard.chart_template_id.id)], context=context) tax_temp_data = obj_tax_temp.browse(cr, uid, tax_temp_ids, context=context) taxes_ref = obj_tax_temp._generate_tax(cr, uid, tax_temp_data, tax_code_ref, company_id, context=context) + self._tax_account(cr, uid, account_ref, taxes_ref, context=context) if obj_wizard.vat: tax_temp_ids = obj_tax_temp.search(cr, uid, [('name','in',['VAT - 5%','VAT - 15%','VAT - 8%']),('chart_template_id','=',obj_wizard.chart_template_id.id)], context=context) tax_temp_data = obj_tax_temp.browse(cr, uid, tax_temp_ids, context=context) taxes_ref = obj_tax_temp._generate_tax(cr, uid, tax_temp_data, tax_code_ref, company_id, context=context) + self._tax_account(cr, uid, account_ref, taxes_ref, context=context) if obj_wizard.service_tax: tax_temp_ids = obj_tax_temp.search(cr, uid, [('name','in',['Service Tax', 'Service Tax - %2', 'Service Tax - %1']),('chart_template_id','=',obj_wizard.chart_template_id.id)], context=context) tax_temp_data = obj_tax_temp.browse(cr, uid, tax_temp_ids, context=context) taxes_ref = obj_tax_temp._generate_tax(cr, uid, tax_temp_data, tax_code_ref, company_id, context=context) + self._tax_account(cr, uid, account_ref, taxes_ref, context=context) if obj_wizard.excise_duty: tax_temp_ids = obj_tax_temp.search(cr, uid, [('name','in',['Excise Duty', 'Excise Duty - %2', 'Excise Duty - 1%']),('chart_template_id','=',obj_wizard.chart_template_id.id)], context=context) tax_temp_data = obj_tax_temp.browse(cr, uid, tax_temp_ids, context=context) - taxes_ref = obj_tax_temp._generate_tax(cr, uid, tax_temp_data, tax_code_ref, company_id, context=context) + taxes_ref = obj_tax_temp._generate_tax(cr, uid, tax_temp_data, tax_code_ref, company_id, context=context) + self._tax_account(cr, uid, account_ref, taxes_ref, context=context) return account_ref, taxes_ref, tax_code_ref - + + def _tax_account(self, cr, uid, account_ref, taxes_ref, context=None): + obj_tax = self.pool.get('account.tax') + for key,value in taxes_ref['account_dict'].items(): + obj_tax.write(cr, uid, [key], { 'account_collected_id': account_ref.get(value['account_collected_id'], False), 'account_paid_id': account_ref.get(value['account_paid_id'], False),}) + return True + account_multi_charts_wizard() # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/addons/l10n_in/account_multi_chart_wizard_view.xml b/addons/l10n_in/account_multi_chart_wizard_view.xml index 899d81fc65b..dde9e5981ca 100644 --- a/addons/l10n_in/account_multi_chart_wizard_view.xml +++ b/addons/l10n_in/account_multi_chart_wizard_view.xml @@ -9,12 +9,11 @@ - - - - - - + + + + + diff --git a/addons/l10n_in/installer.py b/addons/l10n_in/installer.py index 23d03bfc87d..7d4cb04b803 100644 --- a/addons/l10n_in/installer.py +++ b/addons/l10n_in/installer.py @@ -28,7 +28,7 @@ class l10n_installer(osv.osv_memory): _columns = { 'company_type':fields.selection([('partnership_private_company', 'Partnership/Private Firm'), ('public_company', 'Public Firm')], 'Company Type', required=True, - help='Select your company Type according to your need to install Chart Of Account'), + help='Company Type is used to install Indian chart of accounts as per your type of business.'), } _defaults = { 'company_type': 'public_company', diff --git a/addons/l10n_in/l10n_in_private_firm_tax_template.xml b/addons/l10n_in/l10n_in_private_firm_tax_template.xml index 564eb41fdfd..d3d627b54da 100644 --- a/addons/l10n_in/l10n_in_private_firm_tax_template.xml +++ b/addons/l10n_in/l10n_in_private_firm_tax_template.xml @@ -4,7 +4,7 @@ - + Sales Tax Payable 216 payable @@ -13,7 +13,7 @@ - + VAT Payable 217 payable @@ -22,7 +22,7 @@ - + Service Tax Payable 218 payable @@ -31,7 +31,7 @@ - + Exice Duty Payable 219 payable @@ -50,8 +50,8 @@ 0.15 percent sale - - + + @@ -67,8 +67,8 @@ 0.12 percent sale - - + + @@ -86,8 +86,8 @@ 0.05 percent all - - + + 1 @@ -107,8 +107,8 @@ 0.15 percent all - - + + 1 @@ -128,8 +128,8 @@ 0.8 percent all - - + + @@ -147,8 +147,8 @@ 0.10 percent sale - - + + 1 @@ -190,8 +190,8 @@ 0.12 percent - - + + From a5db806929c6265eb891b6017746ae04bcedb194 Mon Sep 17 00:00:00 2001 From: "Jagdish Panchal (Open ERP)" Date: Fri, 8 Jun 2012 18:36:38 +0530 Subject: [PATCH 023/349] [IMP] l10n_in: Improve code bzr revid: jap@tinyerp.com-20120608130638-0zii119hfa340wgv --- addons/l10n_in/account_multi_chart_wizard.py | 49 ++++++------------- .../account_multi_chart_wizard_view.xml | 11 +++-- 2 files changed, 20 insertions(+), 40 deletions(-) diff --git a/addons/l10n_in/account_multi_chart_wizard.py b/addons/l10n_in/account_multi_chart_wizard.py index a7e018b2cdb..78fa5fe23da 100644 --- a/addons/l10n_in/account_multi_chart_wizard.py +++ b/addons/l10n_in/account_multi_chart_wizard.py @@ -44,7 +44,7 @@ class account_multi_charts_wizard(osv.osv_memory): if data.name == 'India - Chart of Accounts for Public Firm': res['value'].update({'sales_tax': True,'vat':True, 'service_tax':True, 'excise_duty': True}) elif data.name == 'India - Chart of Accounts for Partnership/Private Firm': - res['value'].update({'sales_tax': True,'vat':True}) + res['value'].update({'sales_tax': True,'vat':True, 'service_tax':False, 'excise_duty': False}) return res def _load_template(self, cr, uid, template_id, company_id, code_digits=None, obj_wizard=None, account_ref={}, taxes_ref={}, tax_code_ref={}, context=None): @@ -52,58 +52,37 @@ class account_multi_charts_wizard(osv.osv_memory): template = self.pool.get('account.chart.template').browse(cr, uid, template_id, context=context) obj_tax_temp = self.pool.get('account.tax.template') obj_tax = self.pool.get('account.tax') - if obj_wizard.sales_tax == False and obj_wizard.excise_duty == False and obj_wizard.vat == False and obj_wizard.service_tax == False: - raise osv.except_osv(_('Error !'), _('Select Tax to Install')) + tax_temp_ids = [] if obj_wizard.chart_template_id.name == 'India - Chart of Accounts for Public Firm': # Unlink the Tax for current company tax_ids = obj_tax.search(cr, uid, [('company_id','=',company_id)], context=context) obj_tax.unlink(cr, uid, tax_ids, context=context) #Create new Tax as per selected from wizard if obj_wizard.sales_tax: - tax_temp_ids = obj_tax_temp.search(cr, uid, [('name','in',['Sale Tax - 15%','Sale Tax - 12%']),('chart_template_id','=',obj_wizard.chart_template_id.id)], context=context) - tax_temp_data = obj_tax_temp.browse(cr, uid, tax_temp_ids, context=context) - taxes_ref = obj_tax_temp._generate_tax(cr, uid, tax_temp_data, tax_code_ref, company_id, context=context) - self._tax_account(cr, uid, account_ref, taxes_ref, context=context) + tax_temp_ids.append(obj_tax_temp.search(cr, uid, [('name','in',['Sale Tax - 15%','Sale Tax - 12%']),('chart_template_id','=',obj_wizard.chart_template_id.id)], context=context)) if obj_wizard.vat: - tax_temp_ids = obj_tax_temp.search(cr, uid, [('name','in',['VAT - 5%','VAT - 15%','VAT - 8%']),('chart_template_id','=',obj_wizard.chart_template_id.id)], context=context) - tax_temp_data = obj_tax_temp.browse(cr, uid, tax_temp_ids, context=context) - taxes_ref = obj_tax_temp._generate_tax(cr, uid, tax_temp_data, tax_code_ref, company_id, context=context) - self._tax_account(cr, uid, account_ref, taxes_ref, context=context) + tax_temp_ids.append(obj_tax_temp.search(cr, uid, [('name','in',['VAT - 5%','VAT - 15%','VAT - 8%']),('chart_template_id','=',obj_wizard.chart_template_id.id)], context=context)) if obj_wizard.service_tax: - tax_temp_ids = obj_tax_temp.search(cr, uid, [('name','in',['Service Tax','Service Tax - %2','Service Tax - %1']),('chart_template_id','=',obj_wizard.chart_template_id.id)], context=context) - tax_temp_data = obj_tax_temp.browse(cr, uid, tax_temp_ids, context=context) - taxes_ref = obj_tax_temp._generate_tax(cr, uid, tax_temp_data, tax_code_ref, company_id, context=context) - self._tax_account(cr, uid, account_ref, taxes_ref, context=context) + tax_temp_ids.append(obj_tax_temp.search(cr, uid, [('name','in',['Service Tax', 'Service Tax - %2', 'Service Tax - %1']),('chart_template_id','=',obj_wizard.chart_template_id.id)], context=context)) if obj_wizard.excise_duty: - tax_temp_ids = obj_tax_temp.search(cr, uid, [('name','in',['Excise Duty','Excise Duty - %2','Excise Duty - 1%']),('chart_template_id','=',obj_wizard.chart_template_id.id)], context=context) - tax_temp_data = obj_tax_temp.browse(cr, uid, tax_temp_ids, context=context) - taxes_ref = obj_tax_temp._generate_tax(cr, uid, tax_temp_data, tax_code_ref, company_id, context=context) - self._tax_account(cr, uid, account_ref, taxes_ref, context=context) + tax_temp_ids.append(obj_tax_temp.search(cr, uid, [('name','in',['Excise Duty', 'Excise Duty - %2', 'Excise Duty - 1%']),('chart_template_id','=',obj_wizard.chart_template_id.id)], context=context)) elif obj_wizard.chart_template_id.name == 'India - Chart of Accounts for Partnership/Private Firm': # Unlink the Tax for current company tax_ids = obj_tax.search(cr, uid, [('company_id','=',company_id)], context=context) obj_tax.unlink(cr, uid, tax_ids, context=context) #Create new Tax as per selected from wizard if obj_wizard.sales_tax: - tax_temp_ids = obj_tax_temp.search(cr, uid, [('name','in',['Sale Tax - 15%','Sale Tax - 12%']),('chart_template_id','=',obj_wizard.chart_template_id.id)], context=context) - tax_temp_data = obj_tax_temp.browse(cr, uid, tax_temp_ids, context=context) - taxes_ref = obj_tax_temp._generate_tax(cr, uid, tax_temp_data, tax_code_ref, company_id, context=context) - self._tax_account(cr, uid, account_ref, taxes_ref, context=context) + tax_temp_ids.append(obj_tax_temp.search(cr, uid, [('name','in',['Sale Tax - 15%','Sale Tax - 12%']),('chart_template_id','=',obj_wizard.chart_template_id.id)], context=context)) if obj_wizard.vat: - tax_temp_ids = obj_tax_temp.search(cr, uid, [('name','in',['VAT - 5%','VAT - 15%','VAT - 8%']),('chart_template_id','=',obj_wizard.chart_template_id.id)], context=context) - tax_temp_data = obj_tax_temp.browse(cr, uid, tax_temp_ids, context=context) - taxes_ref = obj_tax_temp._generate_tax(cr, uid, tax_temp_data, tax_code_ref, company_id, context=context) - self._tax_account(cr, uid, account_ref, taxes_ref, context=context) + tax_temp_ids.append(obj_tax_temp.search(cr, uid, [('name','in',['VAT - 5%','VAT - 15%','VAT - 8%']),('chart_template_id','=',obj_wizard.chart_template_id.id)], context=context)) if obj_wizard.service_tax: - tax_temp_ids = obj_tax_temp.search(cr, uid, [('name','in',['Service Tax', 'Service Tax - %2', 'Service Tax - %1']),('chart_template_id','=',obj_wizard.chart_template_id.id)], context=context) - tax_temp_data = obj_tax_temp.browse(cr, uid, tax_temp_ids, context=context) - taxes_ref = obj_tax_temp._generate_tax(cr, uid, tax_temp_data, tax_code_ref, company_id, context=context) - self._tax_account(cr, uid, account_ref, taxes_ref, context=context) + tax_temp_ids.append(obj_tax_temp.search(cr, uid, [('name','in',['Service Tax', 'Service Tax - %2', 'Service Tax - %1']),('chart_template_id','=',obj_wizard.chart_template_id.id)], context=context)) if obj_wizard.excise_duty: - tax_temp_ids = obj_tax_temp.search(cr, uid, [('name','in',['Excise Duty', 'Excise Duty - %2', 'Excise Duty - 1%']),('chart_template_id','=',obj_wizard.chart_template_id.id)], context=context) - tax_temp_data = obj_tax_temp.browse(cr, uid, tax_temp_ids, context=context) - taxes_ref = obj_tax_temp._generate_tax(cr, uid, tax_temp_data, tax_code_ref, company_id, context=context) - self._tax_account(cr, uid, account_ref, taxes_ref, context=context) + tax_temp_ids.append(obj_tax_temp.search(cr, uid, [('name','in',['Excise Duty', 'Excise Duty - %2', 'Excise Duty - 1%']),('chart_template_id','=',obj_wizard.chart_template_id.id)], context=context)) + for temp in tax_temp_ids: + tax_temp_data = obj_tax_temp.browse(cr, uid, temp, context=context) + taxes_ref = obj_tax_temp._generate_tax(cr, uid, tax_temp_data, tax_code_ref, company_id, context=context) + self._tax_account(cr, uid, account_ref, taxes_ref, context=context) return account_ref, taxes_ref, tax_code_ref def _tax_account(self, cr, uid, account_ref, taxes_ref, context=None): diff --git a/addons/l10n_in/account_multi_chart_wizard_view.xml b/addons/l10n_in/account_multi_chart_wizard_view.xml index dde9e5981ca..d864a01a3a8 100644 --- a/addons/l10n_in/account_multi_chart_wizard_view.xml +++ b/addons/l10n_in/account_multi_chart_wizard_view.xml @@ -9,11 +9,12 @@ - - - - - + + + + + + From 96333130201c0db03f284fe85cf29d9d6d55defb Mon Sep 17 00:00:00 2001 From: "Jagdish Panchal (Open ERP)" Date: Tue, 12 Jun 2012 12:17:12 +0530 Subject: [PATCH 024/349] [IMP] l10n_in: Remove file l10n_in/account_multi_chart_wizard.py and l10n_in/account_multi_chart_wizard_view.xml bzr revid: jap@tinyerp.com-20120612064712-tviq139uo8yyd1zs --- addons/l10n_in/__init__.py | 1 - addons/l10n_in/__openerp__.py | 1 - addons/l10n_in/account_multi_chart_wizard.py | 96 ------------------- .../account_multi_chart_wizard_view.xml | 22 ----- 4 files changed, 120 deletions(-) delete mode 100644 addons/l10n_in/account_multi_chart_wizard.py delete mode 100644 addons/l10n_in/account_multi_chart_wizard_view.xml diff --git a/addons/l10n_in/__init__.py b/addons/l10n_in/__init__.py index db0c795ae73..f97bda7fb89 100644 --- a/addons/l10n_in/__init__.py +++ b/addons/l10n_in/__init__.py @@ -28,6 +28,5 @@ ############################################################################## import installer -import account_multi_chart_wizard # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/addons/l10n_in/__openerp__.py b/addons/l10n_in/__openerp__.py index cbacb5e5ac3..630d99ca8db 100644 --- a/addons/l10n_in/__openerp__.py +++ b/addons/l10n_in/__openerp__.py @@ -37,7 +37,6 @@ Indian accounting chart and localization. "demo_xml": [], "update_xml": [ "account_tax_code_template.xml", - "account_multi_chart_wizard_view.xml", "l10n_in_wizard.xml", "installer_view.xml", ], diff --git a/addons/l10n_in/account_multi_chart_wizard.py b/addons/l10n_in/account_multi_chart_wizard.py deleted file mode 100644 index 78fa5fe23da..00000000000 --- a/addons/l10n_in/account_multi_chart_wizard.py +++ /dev/null @@ -1,96 +0,0 @@ -# -*- coding: utf-8 -*- -############################################################################## -# -# OpenERP, Open Source Business Applications -# Copyright (C) 2004-2012 OpenERP S.A. (). -# -# 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 tools.translate import _ -from osv import fields, osv -from os.path import join as opj -import tools - -class account_multi_charts_wizard(osv.osv_memory): - _name = 'wizard.multi.charts.accounts' - _inherit = 'wizard.multi.charts.accounts' - _columns = { - 'sales_tax': fields.boolean('Sales Tax', help='If this field is true it allows you install Sales Tax'), - 'vat': fields.boolean('VAT', help='If this field is true it allows install use VAT'), - 'service_tax': fields.boolean('Service Tax', help='If this field is true it allows you install Service tax'), - 'excise_duty': fields.boolean('Excise Duty', help='If this field is true it allows you install Excise duty'), - 'is_indian_chart': fields.boolean('Indian Chart?') - } - - def onchange_chart_template_id(self, cr, uid, ids, chart_template_id=False, context=None): - res = super(account_multi_charts_wizard, self).onchange_chart_template_id(cr, uid, ids, chart_template_id, context=context) - data = self.pool.get('account.chart.template').browse(cr, uid, chart_template_id, context=context) - if data.name in ('India - Chart of Accounts for Public Firm', 'India - Chart of Accounts for Partnership/Private Firm'): - res['value'].update({'is_indian_chart': True}) - else: - res['value'].update({'is_indian_chart': False}) - if data.name == 'India - Chart of Accounts for Public Firm': - res['value'].update({'sales_tax': True,'vat':True, 'service_tax':True, 'excise_duty': True}) - elif data.name == 'India - Chart of Accounts for Partnership/Private Firm': - res['value'].update({'sales_tax': True,'vat':True, 'service_tax':False, 'excise_duty': False}) - return res - - def _load_template(self, cr, uid, template_id, company_id, code_digits=None, obj_wizard=None, account_ref={}, taxes_ref={}, tax_code_ref={}, context=None): - res = super(account_multi_charts_wizard, self)._load_template(cr, uid, template_id, company_id, code_digits, obj_wizard, account_ref, taxes_ref, tax_code_ref, context=context) - template = self.pool.get('account.chart.template').browse(cr, uid, template_id, context=context) - obj_tax_temp = self.pool.get('account.tax.template') - obj_tax = self.pool.get('account.tax') - tax_temp_ids = [] - if obj_wizard.chart_template_id.name == 'India - Chart of Accounts for Public Firm': - # Unlink the Tax for current company - tax_ids = obj_tax.search(cr, uid, [('company_id','=',company_id)], context=context) - obj_tax.unlink(cr, uid, tax_ids, context=context) - #Create new Tax as per selected from wizard - if obj_wizard.sales_tax: - tax_temp_ids.append(obj_tax_temp.search(cr, uid, [('name','in',['Sale Tax - 15%','Sale Tax - 12%']),('chart_template_id','=',obj_wizard.chart_template_id.id)], context=context)) - if obj_wizard.vat: - tax_temp_ids.append(obj_tax_temp.search(cr, uid, [('name','in',['VAT - 5%','VAT - 15%','VAT - 8%']),('chart_template_id','=',obj_wizard.chart_template_id.id)], context=context)) - if obj_wizard.service_tax: - tax_temp_ids.append(obj_tax_temp.search(cr, uid, [('name','in',['Service Tax', 'Service Tax - %2', 'Service Tax - %1']),('chart_template_id','=',obj_wizard.chart_template_id.id)], context=context)) - if obj_wizard.excise_duty: - tax_temp_ids.append(obj_tax_temp.search(cr, uid, [('name','in',['Excise Duty', 'Excise Duty - %2', 'Excise Duty - 1%']),('chart_template_id','=',obj_wizard.chart_template_id.id)], context=context)) - elif obj_wizard.chart_template_id.name == 'India - Chart of Accounts for Partnership/Private Firm': - # Unlink the Tax for current company - tax_ids = obj_tax.search(cr, uid, [('company_id','=',company_id)], context=context) - obj_tax.unlink(cr, uid, tax_ids, context=context) - #Create new Tax as per selected from wizard - if obj_wizard.sales_tax: - tax_temp_ids.append(obj_tax_temp.search(cr, uid, [('name','in',['Sale Tax - 15%','Sale Tax - 12%']),('chart_template_id','=',obj_wizard.chart_template_id.id)], context=context)) - if obj_wizard.vat: - tax_temp_ids.append(obj_tax_temp.search(cr, uid, [('name','in',['VAT - 5%','VAT - 15%','VAT - 8%']),('chart_template_id','=',obj_wizard.chart_template_id.id)], context=context)) - if obj_wizard.service_tax: - tax_temp_ids.append(obj_tax_temp.search(cr, uid, [('name','in',['Service Tax', 'Service Tax - %2', 'Service Tax - %1']),('chart_template_id','=',obj_wizard.chart_template_id.id)], context=context)) - if obj_wizard.excise_duty: - tax_temp_ids.append(obj_tax_temp.search(cr, uid, [('name','in',['Excise Duty', 'Excise Duty - %2', 'Excise Duty - 1%']),('chart_template_id','=',obj_wizard.chart_template_id.id)], context=context)) - for temp in tax_temp_ids: - tax_temp_data = obj_tax_temp.browse(cr, uid, temp, context=context) - taxes_ref = obj_tax_temp._generate_tax(cr, uid, tax_temp_data, tax_code_ref, company_id, context=context) - self._tax_account(cr, uid, account_ref, taxes_ref, context=context) - return account_ref, taxes_ref, tax_code_ref - - def _tax_account(self, cr, uid, account_ref, taxes_ref, context=None): - obj_tax = self.pool.get('account.tax') - for key,value in taxes_ref['account_dict'].items(): - obj_tax.write(cr, uid, [key], { 'account_collected_id': account_ref.get(value['account_collected_id'], False), 'account_paid_id': account_ref.get(value['account_paid_id'], False),}) - return True - -account_multi_charts_wizard() - -# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/addons/l10n_in/account_multi_chart_wizard_view.xml b/addons/l10n_in/account_multi_chart_wizard_view.xml deleted file mode 100644 index d864a01a3a8..00000000000 --- a/addons/l10n_in/account_multi_chart_wizard_view.xml +++ /dev/null @@ -1,22 +0,0 @@ - - - - - Generate Chart of Accounts from a Chart Template - wizard.multi.charts.accounts - form - - - - - - - - - - - - - - - From 2911d6a8c5532310e07b3b593d78c43653190137 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=ABl=20Grand-Guillaume?= Date: Thu, 21 Jun 2012 12:40:18 +0200 Subject: [PATCH 025/349] [IMP] Provide _prepare* hooks in bank statement object for the entries creations of account.move.line from a statement line bzr revid: joel.grandguillaume@camptocamp.com-20120621104018-ryylbaxh6696e0rc --- addons/account/account_bank_statement.py | 247 +++++++++++++++++------ 1 file changed, 184 insertions(+), 63 deletions(-) diff --git a/addons/account/account_bank_statement.py b/addons/account/account_bank_statement.py index 1f47a6be9bd..97d10bfc022 100644 --- a/addons/account/account_bank_statement.py +++ b/addons/account/account_bank_statement.py @@ -205,7 +205,182 @@ class account_bank_statement(osv.osv): def button_dummy(self, cr, uid, ids, context=None): return self.write(cr, uid, ids, {}, context=context) + def _prepare_move(self, cr, uid, st_line, st_line_number, context=None): + """Prepare the dict of values to create the move from a + statement line. This method may be overridden to implement custom + move generation (making sure to call super() to establish + a clean extension chain). + + :param browse_record st_line: account.bank.statement.line record to + create the move from. + :param char st_line_number: will be used as the name of the generated account move + :return: dict of value to create() the account.move + """ + move_vals = { + 'journal_id': st_line.statement_id.journal_id.id, + 'period_id': st_line.statement_id.period_id.id, + 'date': st_line.date, + 'name': st_line_number, + 'ref': st_line.ref, + } + return move_vals + + def _prepare_bank_move_line(self, cr, uid, st_line, move_id, amount, company_currency_id, + context=None): + """Compute the args to build the dict of values to create the bank move line from a + statement line by calling the _prepare_move_line_vals. This method may be + overridden to implement custom move generation (making sure to call super() to + establish a clean extension chain). + + :param browse_record st_line: account.bank.statement.line record to + create the move from. + :param int/long move_id: ID of the account.move to link the move line + :param float amount: amount of the move line + :param int/long company_currency_id: ID of currency of the concerned company + :return: dict of value to create() the bank account.move.line + """ + anl_id = st_line.analytic_account_id and st_line.analytic_account_id.id or False + debit = ((amount<0) and -amount) or 0.0 + credit = ((amount>0) and amount) or 0.0 + cur_id = False + amt_cur = False + if st_line.statement_id.currency.id <> company_currency_id: + amount_cur = res_currency_obj.compute(cr, uid, company_currency_id, + st.currency.id, amount, context=context) + amt_cur = -amount_cur + if st_line.account_id and st_line.account_id.currency_id and st_line.account_id.currency_id.id <> company_currency_id: + cur_id = st_line.account_id.currency_id.id + amount_cur = res_currency_obj.compute(cr, uid, company_currency_id, + st_line.account_id.currency_id.id, amount, context=context) + amt_cur = -amount_cur + + res = self._prepare_move_line_vals(cr, uid, st_line, move_id, debit, credit, + amount_currency=amt_cur, currency_id=cur_id, analytic_id = anl_id, context=context) + return res + + def _get_counter_part_account(sefl, cr, uid, st_line, context=None): + """Retrieve the account to use in the counterpart move. + This method may be overridden to implement custom move generation (making sure to + call super() to establish a clean extension chain). + + :param browse_record st_line: account.bank.statement.line record to + create the move from. + :return: int/long of the account.account to use as counterpart + """ + account_id = False + if st_line.amount >= 0: + account_id = st_line.statement_id.journal_id.default_credit_account_id.id + else: + account_id = st_line.statement_id.journal_id.default_debit_account_id.id + return account_id + + def _get_counter_part_partner(sefl, cr, uid, st_line, context=None): + """Retrieve the partner to use in the counterpart move. + This method may be overridden to implement custom move generation (making sure to + call super() to establish a clean extension chain). + + :param browse_record st_line: account.bank.statement.line record to + create the move from. + :return: int/long of the res.partner to use as counterpart + """ + import pdb;pdb.set_trace() + partner_id = ((st_line.partner_id) and st_line.partner_id.id) or False + return partner_id + + + def _prepare_counterpart_move_line(self, cr, uid, st_line, move_id, amount, company_currency_id, + context=None): + """Compute the args to build the dict of values to create the counter part move line from a + statement line by calling the _prepare_move_line_vals. This method may be + overridden to implement custom move generation (making sure to call super() to + establish a clean extension chain). + + :param browse_record st_line: account.bank.statement.line record to + create the move from. + :param int/long move_id: ID of the account.move to link the move line + :param float amount: amount of the move line + :param int/long account_id: ID of account to use as counter part + :param int/long company_currency_id: ID of currency of the concerned company + :return: dict of value to create() the bank account.move.line + """ + account_id = self._get_counter_part_account(cr, uid, st_line, context=context) + partner_id = self._get_counter_part_partner(cr, uid, st_line, context=context) + debit = ((amount > 0) and amount) or 0.0 + credit = ((amount < 0) and -amount) or 0.0 + cur_id = False + amt_cur = False + if st_line.statement_id.currency.id <> company_currency_id: + amt_cur = st_line.amount + cur_id = st_line.statement_id.currency.id + res = self._prepare_move_line_vals(cr, uid, st_line, move_id, debit, credit, + amount_currency = amt_cur, currency_id = cur_id, account_id = account_id, + partner_id = partner_id, context=context) + return res + + def _prepare_move_line_vals(self, cr, uid, st_line, move_id, debit, credit, currency_id = False, + amount_currency= False, account_id = False, analytic_id = False, + partner_id = False, context=None): + """Prepare the dict of values to create the move line from a + statement line. All non-mandatory args will replace the default computed one. + This method may be overridden to implement custom move generation (making sure to + call super() to establish a clean extension chain). + + :param browse_record st_line: account.bank.statement.line record to + create the move from. + :param int/long move_id: ID of the account.move to link the move line + :param float debit: debit amount of the move line + :param float credit: credit amount of the move line + :param int/long currency_id: ID of currency of the move line to create + :param float amount_currency: amount of the debit/credit expressed in the currency_id + :param int/long account_id: ID of the account to use in the move line if different + from the statement line account ID + :param int/long analytic_id: ID of analytic account to put on the move line + :param int/long partner_id: ID of the partner to put on the move line + :return: dict of value to create() the account.move.line + """ + acc_id = (st_line.account_id) and st_line.account_id.id + cur_id = st_line.statement_id.currency.id + par_id = ((st_line.partner_id) and st_line.partner_id.id) or False + anl_acc_id = False + am_curr = False + amount_currency = False + if account_id: + acc_id = account_id + if currency_id: + cur_id = currency_id + if amount_currency: + am_curr = amount_currency + if analytic_id: + anl_acc_id = analytic_id + if partner_id: + par_id = partner_id + ml_val = { + 'name': st_line.name, + 'date': st_line.date, + 'ref': st_line.ref, + 'move_id': move_id, + 'partner_id': partner_id, + 'account_id': acc_id, + 'credit': credit, + 'debit': debit, + 'statement_id': st_line.statement_id.id, + 'journal_id': st_line.statement_id.journal_id.id, + 'period_id': st_line.statement_id.period_id.id, + 'currency_id': cur_id, + 'amount_currency': am_curr, + 'analytic_account_id': anl_acc_id, + } + return ml_val + def create_move_from_st_line(self, cr, uid, st_line_id, company_currency_id, st_line_number, context=None): + """Create the account move from the statement line using the _prepare_bank_move_line and + _prepare_counterpart_move_line hook methods. + :param int/long st_line: ID of the account.bank.statement.line to create the move from. + :param int/long company_currency_id: ID of the res.currency of the company + :param char st_line_number: will be used as the name of the generated account move + :return: ID of the account.move created + """ + if context is None: context = {} res_currency_obj = self.pool.get('res.currency') @@ -217,82 +392,28 @@ class account_bank_statement(osv.osv): context.update({'date': st_line.date}) - move_id = account_move_obj.create(cr, uid, { - 'journal_id': st.journal_id.id, - 'period_id': st.period_id.id, - 'date': st_line.date, - 'name': st_line_number, - 'ref': st_line.ref, - }, context=context) + move_vals = self._prepare_move(cr, uid, st_line, st_line_number, context=context) + move_id = account_move_obj.create(cr, uid, move_vals, context=context) account_bank_statement_line_obj.write(cr, uid, [st_line.id], { 'move_ids': [(4, move_id, False)] }) - torec = [] - if st_line.amount >= 0: - account_id = st.journal_id.default_credit_account_id.id - else: - account_id = st.journal_id.default_debit_account_id.id - acc_cur = ((st_line.amount<=0) and st.journal_id.default_debit_account_id) or st_line.account_id + context.update({ 'res.currency.compute.account': acc_cur, }) amount = res_currency_obj.compute(cr, uid, st.currency.id, company_currency_id, st_line.amount, context=context) - val = { - 'name': st_line.name, - 'date': st_line.date, - 'ref': st_line.ref, - 'move_id': move_id, - 'partner_id': ((st_line.partner_id) and st_line.partner_id.id) or False, - 'account_id': (st_line.account_id) and st_line.account_id.id, - 'credit': ((amount>0) and amount) or 0.0, - 'debit': ((amount<0) and -amount) or 0.0, - 'statement_id': st.id, - 'journal_id': st.journal_id.id, - 'period_id': st.period_id.id, - 'currency_id': st.currency.id, - 'analytic_account_id': st_line.analytic_account_id and st_line.analytic_account_id.id or False - } - - if st.currency.id <> company_currency_id: - amount_cur = res_currency_obj.compute(cr, uid, company_currency_id, - st.currency.id, amount, context=context) - val['amount_currency'] = -amount_cur - - if st_line.account_id and st_line.account_id.currency_id and st_line.account_id.currency_id.id <> company_currency_id: - val['currency_id'] = st_line.account_id.currency_id.id - amount_cur = res_currency_obj.compute(cr, uid, company_currency_id, - st_line.account_id.currency_id.id, amount, context=context) - val['amount_currency'] = -amount_cur - - move_line_id = account_move_line_obj.create(cr, uid, val, context=context) + bank_move_val = self._prepare_bank_move_line(cr, uid, st_line, move_id, amount, + company_currency_id, context=context) + move_line_id = account_move_line_obj.create(cr, uid, bank_move_val, context=context) torec.append(move_line_id) - # Fill the secondary amount/currency - # if currency is not the same than the company - amount_currency = False - currency_id = False - if st.currency.id <> company_currency_id: - amount_currency = st_line.amount - currency_id = st.currency.id - account_move_line_obj.create(cr, uid, { - 'name': st_line.name, - 'date': st_line.date, - 'ref': st_line.ref, - 'move_id': move_id, - 'partner_id': ((st_line.partner_id) and st_line.partner_id.id) or False, - 'account_id': account_id, - 'credit': ((amount < 0) and -amount) or 0.0, - 'debit': ((amount > 0) and amount) or 0.0, - 'statement_id': st.id, - 'journal_id': st.journal_id.id, - 'period_id': st.period_id.id, - 'amount_currency': amount_currency, - 'currency_id': currency_id, - }, context=context) + counterpart_move_val = self._prepare_counterpart_move_line(cr, uid, st_line, move_id, + amount, company_currency_id, context=context) + account_move_line_obj.create(cr, uid, counterpart_move_val, context=context) for line in account_move_line_obj.browse(cr, uid, [x.id for x in account_move_obj.browse(cr, uid, move_id, From 28908bea003e11e2df7ccedc58f9a0fbee159bc1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=ABl=20Grand-Guillaume?= Date: Thu, 21 Jun 2012 13:49:16 +0200 Subject: [PATCH 026/349] [FIX] Remove pdb... no comment... bzr revid: joel.grandguillaume@camptocamp.com-20120621114916-a0uy3ipru8usgzo0 --- addons/account/account_bank_statement.py | 1 - 1 file changed, 1 deletion(-) diff --git a/addons/account/account_bank_statement.py b/addons/account/account_bank_statement.py index 97d10bfc022..ece18a016fe 100644 --- a/addons/account/account_bank_statement.py +++ b/addons/account/account_bank_statement.py @@ -283,7 +283,6 @@ class account_bank_statement(osv.osv): create the move from. :return: int/long of the res.partner to use as counterpart """ - import pdb;pdb.set_trace() partner_id = ((st_line.partner_id) and st_line.partner_id.id) or False return partner_id From 2c115e6856f5c6eb7f3d730b0ccfa028b386b009 Mon Sep 17 00:00:00 2001 From: Ronald Portier Date: Fri, 22 Jun 2012 16:19:32 +0200 Subject: [PATCH 027/349] [FIX] Problem with runaway cpu and/or postgres crash on analytic account analysis. lp bug: https://launchpad.net/bugs/1015995 fixed bzr revid: ronald@therp.nl-20120622141932-f6rywvd1nawn186w --- .../account_analytic_analysis.py | 54 +++++++------------ 1 file changed, 19 insertions(+), 35 deletions(-) diff --git a/addons/account_analytic_analysis/account_analytic_analysis.py b/addons/account_analytic_analysis/account_analytic_analysis.py index 20c170cb5c0..cedcc9fa533 100644 --- a/addons/account_analytic_analysis/account_analytic_analysis.py +++ b/addons/account_analytic_analysis/account_analytic_analysis.py @@ -418,41 +418,25 @@ class account_analytic_account_summary_user(osv.osv): } def init(self, cr): - tools.sql.drop_view_if_exists(cr, 'account_analytic_analysis_summary_user') - cr.execute('CREATE OR REPLACE VIEW account_analytic_analysis_summary_user AS (' \ - 'SELECT ' \ - '(u.account_id * u.max_user) + u."user" AS id, ' \ - 'u.account_id AS account_id, ' \ - 'u."user" AS "user", ' \ - 'COALESCE(SUM(l.unit_amount), 0.0) AS unit_amount ' \ - 'FROM ' \ - '(SELECT ' \ - 'a.id AS account_id, ' \ - 'u1.id AS "user", ' \ - 'MAX(u2.id) AS max_user ' \ - 'FROM ' \ - 'res_users AS u1, ' \ - 'res_users AS u2, ' \ - 'account_analytic_account AS a ' \ - 'GROUP BY u1.id, a.id ' \ - ') AS u ' \ - 'LEFT JOIN ' \ - '(SELECT ' \ - 'l.account_id AS account_id, ' \ - 'l.user_id AS "user", ' \ - 'SUM(l.unit_amount) AS unit_amount ' \ - 'FROM account_analytic_line AS l, ' \ - 'account_analytic_journal AS j ' \ - 'WHERE (j.type = \'general\') and (j.id=l.journal_id) ' \ - 'GROUP BY l.account_id, l.user_id ' \ - ') AS l ' - 'ON (' \ - 'u.account_id = l.account_id ' \ - 'AND u."user" = l."user"' \ - ') ' \ - 'GROUP BY u."user", u.account_id, u.max_user' \ - ')') - + cr.execute('''CREATE OR REPLACE VIEW account_analytic_analysis_summary_user AS ( + with mu as + (select max(id) as max_user from res_users) + , lu AS + (SELECT + l.account_id AS account_id, + coalesce(l.user_id, 0) AS user_id, + SUM(l.unit_amount) AS unit_amount + FROM account_analytic_line AS l, + account_analytic_journal AS j + WHERE (j.type = 'general' ) and (j.id=l.journal_id) + GROUP BY l.account_id, l.user_id + ) + select (lu.account_id * mu.max_user) + lu.user_id as id, + lu.account_id as account_id, + lu.user_id as "user", + unit_amount + from lu, mu)''') + account_analytic_account_summary_user() class account_analytic_account_summary_month(osv.osv): From ff4342dc4f08adf10343ae700d8c9ebf89fdd2a2 Mon Sep 17 00:00:00 2001 From: Christophe Simonis Date: Mon, 25 Jun 2012 14:26:30 +0200 Subject: [PATCH 028/349] [ADD] signup addon bzr revid: chs@openerp.com-20120625122630-ce6hywabt512xbh6 --- addons/anonymous/static/src/xml/anonymous.xml | 2 + addons/signup/__init__.py | 2 + addons/signup/__openerp__.py | 23 +++++++ addons/signup/res_config.py | 19 ++++++ addons/signup/res_config.xml | 16 +++++ addons/signup/signup_wizard.py | 65 +++++++++++++++++++ addons/signup/signup_wizard.xml | 41 ++++++++++++ addons/signup/static/src/js/signup.js | 21 ++++++ addons/signup/static/src/xml/signup.xml | 14 ++++ 9 files changed, 203 insertions(+) create mode 100644 addons/signup/__init__.py create mode 100644 addons/signup/__openerp__.py create mode 100644 addons/signup/res_config.py create mode 100644 addons/signup/res_config.xml create mode 100644 addons/signup/signup_wizard.py create mode 100644 addons/signup/signup_wizard.xml create mode 100644 addons/signup/static/src/js/signup.js create mode 100644 addons/signup/static/src/xml/signup.xml diff --git a/addons/anonymous/static/src/xml/anonymous.xml b/addons/anonymous/static/src/xml/anonymous.xml index 4c6d2fcbf54..7429efff458 100644 --- a/addons/anonymous/static/src/xml/anonymous.xml +++ b/addons/anonymous/static/src/xml/anonymous.xml @@ -4,10 +4,12 @@ + diff --git a/addons/signup/__init__.py b/addons/signup/__init__.py new file mode 100644 index 00000000000..f15ba34bf0a --- /dev/null +++ b/addons/signup/__init__.py @@ -0,0 +1,2 @@ +import signup_wizard +import res_config diff --git a/addons/signup/__openerp__.py b/addons/signup/__openerp__.py new file mode 100644 index 00000000000..b927b9526b7 --- /dev/null +++ b/addons/signup/__openerp__.py @@ -0,0 +1,23 @@ +{ + 'name': 'Signup', + 'description': 'Allow users to register', + 'author': 'OpenERP SA', + 'version': '1.0', + 'category': 'Tools', + 'website': 'http://www.openerp.com', + 'installable': True, + 'depends': ['anonymous', 'base_setup'], + 'data': [ + 'signup_wizard.xml', + 'res_config.xml', + ], + 'js': [ + 'static/src/js/signup.js', + ], + #'css': [ + # 'static/src/css/reset_password.css', + #], + 'qweb': [ + 'static/src/xml/signup.xml', + ], +} diff --git a/addons/signup/res_config.py b/addons/signup/res_config.py new file mode 100644 index 00000000000..0c8ab8023d8 --- /dev/null +++ b/addons/signup/res_config.py @@ -0,0 +1,19 @@ +from openerp.osv import osv, fields + +class ResConfig(osv.TransientModel): + _inherit = 'base.config.settings' + + _columns = { + 'signup_user_template_id': fields.many2one('res.users', 'Template user for account creation') + } + + def get_default_user_tpl(self, cr, uid, fields, context=None): + icp = self.pool.get('ir.config_parameter') + return { + 'signup_user_template_id': icp.get_param(cr, uid, 'signup.user_template_id', 0) or False + } + + def set_user_template(self, cr, uid, ids, context=None): + config = self.browse(cr, uid, ids[0], context=context) + icp = self.pool.get('ir.config_parameter') + icp.set_param(cr, uid, 'signup.user_template_id', config.signup_user_template_id.id) diff --git a/addons/signup/res_config.xml b/addons/signup/res_config.xml new file mode 100644 index 00000000000..d2c85a33fd5 --- /dev/null +++ b/addons/signup/res_config.xml @@ -0,0 +1,16 @@ + + + + Inherit General Settings + base.config.settings + + form + + + + + + + + + diff --git a/addons/signup/signup_wizard.py b/addons/signup/signup_wizard.py new file mode 100644 index 00000000000..939e90aa21d --- /dev/null +++ b/addons/signup/signup_wizard.py @@ -0,0 +1,65 @@ +from functools import partial +from openerp.osv import osv, fields + +class res_users(osv.Model): + _inherit = 'res.users' + + _sql_constraints = [ + ('email_uniq', 'UNIQUE (user_email)', 'You can not have two users with the same email!') + ] + + +class signup_wizard(osv.TransientModel): + _name = 'signup.wizard' + _columns = { + 'name': fields.char('Name', size=64), + 'email': fields.char('Email', size=64), + 'pw': fields.char('Password', size=64), + 'cpw': fields.char('Confirm Password', size=64), + 'state': fields.selection([(x, x) for x in 'draft done missmatch'.split()], required=True), + } + _defaults = { + 'state': 'draft', + } + + def create(self, cr, uid, values, context=None): + # NOTE here, invalid values raises exceptions to avoid storing + # sensitive data into the database (which then are available to anyone) + + name = values.get('name') + email = values.get('email') + pw = values.get('pw') + cpw = values.get('cpw') + + if pw != cpw: + raise osv.except_osv('Error', 'Passwords missmatch') + + Users = self.pool.get('res.users') + + user_template_id = self.pool.get('ir.config_parameter').get_param(cr, uid, 'signup.user_template_id', 0) + if user_template_id: + func = partial(Users.copy, cr, 1, user_template_id, context=context) + else: + func = partial(Users.create, cr, 1, context=context) + + func({ + 'name': name, + 'login': email, + 'user_email': email, + 'password': pw, + 'active': True, + }) + + values = {'state': 'done'} + return super(signup_wizard, self).create(cr, uid, values, context) + + def signup(self, cr, uid, ids, context=None): + return { + 'type': 'ir.actions.client', + 'tag': 'login', + } + + def onchange_pw(self, cr, uid, ids, pw, cpw, context=None): + if pw != cpw: + return {'value': {'state': 'missmatch'}} + return {'value': {'state': 'draft'}} diff --git a/addons/signup/signup_wizard.xml b/addons/signup/signup_wizard.xml new file mode 100644 index 00000000000..ec5095ff474 --- /dev/null +++ b/addons/signup/signup_wizard.xml @@ -0,0 +1,41 @@ + + + + + signup.wizard.form + signup.wizard + form + +
+ + + + + + + +
Passwords missmatch
+
+ + - - - - - - diff --git a/doc/form-notes.rst b/doc/form-notes.rst new file mode 100644 index 00000000000..fc450a336e1 --- /dev/null +++ b/doc/form-notes.rst @@ -0,0 +1,49 @@ +Notes on the usage of the Form View as a sub-widget +=================================================== + +Undocumented stuff +------------------ + +* ``initial_mode`` *option* defines the starting mode of the form + view, one of ``view`` and ``edit`` (?). Default value is ``view`` + (non-editable form). + +* ``embedded_view`` *attribute* has to be set separately when + providing a view directly, no option available for that usage. + + * View arch **must** contain node with + ``@class="oe_form_container"``, otherwise everything will break + without any info + + * Root element of view arch not being ``form`` may or may not work + correctly, no idea. + + * Freeform views => ``@version="7.0"`` + +* Form is not entirely loaded (some widgets may not appear) unless + ``on_record_loaded`` is called (or ``do_show``, which itself calls + ``on_record_loaded``). + +* "Empty" form => ``on_button_new`` (...), or manually call + ``default_get`` + ``on_record_loaded`` + +* Form fields default to width: 100%, padding, !important margin, can + be reached via ``.oe_form_field`` + +* Form *will* render buttons and a pager, offers options to locate + both outside of form itself (``$buttons`` and ``$pager``), providing + empty jquery objects (``$()``) seems to stop displaying both but not + sure if there are deleterious side-effects. + + Other options: + + * Pass in ``$(document.createDocumentFragment)`` to ensure it's a + DOM-compatible tree completely outside of the actual DOM. + + * ??? + +* readonly fields probably don't have a background, beware if need of + overlay + + * What is the difference between ``readonly`` and + ``effective_readonly``? diff --git a/doc/index.rst b/doc/index.rst index 9f54b879acc..c5b85326dac 100644 --- a/doc/index.rst +++ b/doc/index.rst @@ -18,6 +18,8 @@ Contents: search-view + form-notes + Older stuff ----------- From cbba19da672a74c6e3edd7dc577e09e5f07f3bb9 Mon Sep 17 00:00:00 2001 From: Xavier Morel Date: Thu, 28 Jun 2012 10:45:47 +0200 Subject: [PATCH 044/349] [IMP] automatically focus first field of edited row bzr revid: xmo@openerp.com-20120628084547-6fo7fkiy2gh2wb6m --- addons/web/static/src/js/view_list_editable.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/addons/web/static/src/js/view_list_editable.js b/addons/web/static/src/js/view_list_editable.js index 4109a5bd6d5..74b51c3c686 100644 --- a/addons/web/static/src/js/view_list_editable.js +++ b/addons/web/static/src/js/view_list_editable.js @@ -147,7 +147,6 @@ openerp.web.list_editable = function (instance) { return this.form.on_record_loaded(record.attributes).pipe(function () { return self.form.do_show({reload: false}); }).then(function () { - // TODO: automatic focus of ?first field // TODO: [Save] button // TODO: save on action button? _(cells).each(function (cell, field_name) { @@ -169,6 +168,8 @@ openerp.web.list_editable = function (instance) { minHeight: $cell.outerHeight() }); }); + // TODO: actually focus clicked field (if editable) + self.form.fields[self.form.fields_order[0]].focus(); self.trigger('edit:after', record, self.form) }); From 2c6c387c07d38164a2c0290b1ccc42df69d625d1 Mon Sep 17 00:00:00 2001 From: "Divyesh Makwana (Open ERP)" Date: Thu, 28 Jun 2012 14:57:06 +0530 Subject: [PATCH 045/349] [IMP] crm : If the field next action is empty, the '-' should not be there. bzr revid: mdi@tinyerp.com-20120628092706-5dug971wzxyihzfe --- 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 ca1301dd53b..79a47b833b3 100644 --- a/addons/crm/crm_lead_view.xml +++ b/addons/crm/crm_lead_view.xml @@ -443,7 +443,7 @@ + + + + From 52723ef0525d2044c3df7f0359b601fd9326394a Mon Sep 17 00:00:00 2001 From: Xavier Morel Date: Tue, 10 Jul 2012 16:33:23 +0200 Subject: [PATCH 148/349] [FIX] monkey around keyboard handling to ensure we don't cancel a cancelled edition or any other such thing. maybe the form should be explicitly blurred when saved/cancelled? bzr revid: xmo@openerp.com-20120710143323-fye927s9k455mqls --- addons/web/static/src/js/view_list_editable.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/addons/web/static/src/js/view_list_editable.js b/addons/web/static/src/js/view_list_editable.js index 7bc12b325fc..b225af4cb0c 100644 --- a/addons/web/static/src/js/view_list_editable.js +++ b/addons/web/static/src/js/view_list_editable.js @@ -365,6 +365,7 @@ openerp.web.list_editable = function (instance) { }); }, keyup_ENTER: function () { + if (!this.editor.isEditing()) { return; } var self = this; return this.saveEdition().pipe(function (saveInfo) { if (saveInfo.created) { @@ -375,6 +376,7 @@ openerp.web.list_editable = function (instance) { }); }, keyup_ESCAPE: function () { + if (!this.editor.isEditing()) { return; } return this.cancelEdition(); } }); From a2ad095f6140d9a42bd59c98d0fc4672529b228a Mon Sep 17 00:00:00 2001 From: sebastien beau Date: Wed, 11 Jul 2012 02:23:33 +0200 Subject: [PATCH 149/349] [REF] product: refactor move function field on variant in order to allow to move the seller_ids from the template to the variant easily bzr revid: sebastien.beau@akretion.com.br-20120711002333-frtn37s96ovjahkp --- addons/product/product.py | 68 ++++++++++++++++++++------------------- 1 file changed, 35 insertions(+), 33 deletions(-) diff --git a/addons/product/product.py b/addons/product/product.py index a81074aa56e..091c76db44b 100644 --- a/addons/product/product.py +++ b/addons/product/product.py @@ -258,32 +258,6 @@ class product_template(osv.osv): _name = "product.template" _description = "Product Template" - def _get_main_product_supplier(self, cr, uid, product, context=None): - """Determines the main (best) product supplier for ``product``, - returning the corresponding ``supplierinfo`` record, or False - if none were found. The default strategy is to select the - supplier with the highest priority (i.e. smallest sequence). - - :param browse_record product: product to supply - :rtype: product.supplierinfo browse_record or False - """ - sellers = [(seller_info.sequence, seller_info) - for seller_info in product.seller_ids or [] - if seller_info and isinstance(seller_info.sequence, (int, long))] - return sellers and sellers[0][1] or False - - def _calc_seller(self, cr, uid, ids, fields, arg, context=None): - result = {} - for product in self.browse(cr, uid, ids, context=context): - main_supplier = self._get_main_product_supplier(cr, uid, product, context=context) - result[product.id] = { - 'seller_info_id': main_supplier and main_supplier.id or False, - 'seller_delay': main_supplier and main_supplier.delay or 1, - 'seller_qty': main_supplier and main_supplier.qty or 0.0, - 'seller_id': main_supplier and main_supplier.name.id or False - } - return result - _columns = { 'name': fields.char('Name', size=128, required=True, translate=True, select=True), 'product_manager': fields.many2one('res.users','Product Manager',help="This is use as task responsible"), @@ -320,11 +294,7 @@ class product_template(osv.osv): help='Coefficient to convert Unit of Measure to UOS\n' ' uos = uom * coeff'), 'mes_type': fields.selection((('fixed', 'Fixed'), ('variable', 'Variable')), 'Measure Type', required=True), - 'seller_info_id': fields.function(_calc_seller, type='many2one', relation="product.supplierinfo", multi="seller_info"), - 'seller_delay': fields.function(_calc_seller, type='integer', string='Supplier Lead Time', multi="seller_info", help="This is the average delay in days between the purchase order confirmation and the reception of goods for this product and for the default supplier. It is used by the scheduler to order requests based on reordering delays."), - 'seller_qty': fields.function(_calc_seller, type='float', string='Supplier Quantity', multi="seller_info", help="This is minimum quantity to purchase from Main Supplier."), - 'seller_id': fields.function(_calc_seller, type='many2one', relation="res.partner", string='Main Supplier', help="Main Supplier who has highest priority in Supplier List.", multi="seller_info"), - 'seller_ids': fields.one2many('product.supplierinfo', 'product_id', 'Partners'), + 'seller_ids': fields.one2many('product.supplierinfo', 'product_template_id', 'Partners'), 'loc_rack': fields.char('Rack', size=16), 'loc_row': fields.char('Row', size=16), 'loc_case': fields.char('Case', size=16), @@ -491,6 +461,34 @@ class product_product(osv.osv): res[p.id] = (data['code'] and ('['+data['code']+'] ') or '') + \ (data['name'] or '') + (data['variants'] and (' - '+data['variants']) or '') return res + + + def _get_main_product_supplier(self, cr, uid, product, context=None): + """Determines the main (best) product supplier for ``product``, + returning the corresponding ``supplierinfo`` record, or False + if none were found. The default strategy is to select the + supplier with the highest priority (i.e. smallest sequence). + + :param browse_record product: product to supply + :rtype: product.supplierinfo browse_record or False + """ + sellers = [(seller_info.sequence, seller_info) + for seller_info in product.seller_ids or [] + if seller_info and isinstance(seller_info.sequence, (int, long))] + return sellers and sellers[0][1] or False + + def _calc_seller(self, cr, uid, ids, fields, arg, context=None): + result = {} + for product in self.browse(cr, uid, ids, context=context): + main_supplier = self._get_main_product_supplier(cr, uid, product, context=context) + result[product.id] = { + 'seller_info_id': main_supplier and main_supplier.id or False, + 'seller_delay': main_supplier and main_supplier.delay or 1, + 'seller_qty': main_supplier and main_supplier.qty or 0.0, + 'seller_id': main_supplier and main_supplier.name.id or False + } + return result + _defaults = { 'active': lambda *a: 1, @@ -526,6 +524,10 @@ class product_product(osv.osv): 'name_template': fields.related('product_tmpl_id', 'name', string="Name", type='char', size=128, store=True, select=True), 'color': fields.integer('Color Index'), 'product_image': fields.binary('Image'), + 'seller_info_id': fields.function(_calc_seller, type='many2one', relation="product.supplierinfo", multi="seller_info"), + 'seller_delay': fields.function(_calc_seller, type='integer', string='Supplier Lead Time', multi="seller_info", help="This is the average delay in days between the purchase order confirmation and the reception of goods for this product and for the default supplier. It is used by the scheduler to order requests based on reordering delays."), + 'seller_qty': fields.function(_calc_seller, type='float', string='Supplier Quantity', multi="seller_info", help="This is minimum quantity to purchase from Main Supplier."), + 'seller_id': fields.function(_calc_seller, type='many2one', relation="res.partner", string='Main Supplier', help="Main Supplier who has highest priority in Supplier List.", multi="seller_info"), } def create(self, cr, uid, vals, context=None): @@ -783,10 +785,10 @@ class product_supplierinfo(osv.osv): 'product_name': fields.char('Supplier Product Name', size=128, help="This supplier's product name will be used when printing a request for quotation. Keep empty to use the internal one."), 'product_code': fields.char('Supplier Product Code', size=64, help="This supplier's product code will be used when printing a request for quotation. Keep empty to use the internal one."), 'sequence' : fields.integer('Sequence', help="Assigns the priority to the list of product supplier."), - 'product_uom': fields.related('product_id', 'uom_po_id', type='many2one', relation='product.uom', string="Supplier Unit of Measure", readonly="1", help="This comes from the product form."), + 'product_uom': fields.related('product_template_id', 'uom_po_id', type='many2one', relation='product.uom', string="Supplier Unit of Measure", readonly="1", help="This comes from the product form."), 'min_qty': fields.float('Minimal Quantity', required=True, help="The minimal quantity to purchase to this supplier, expressed in the supplier Product Unit of Measure if not empty, in the default unit of measure of the product otherwise."), 'qty': fields.function(_calc_qty, store=True, type='float', string='Quantity', multi="qty", help="This is a quantity which is converted into Default Unit of Measure."), - 'product_id' : fields.many2one('product.template', 'Product', required=True, ondelete='cascade', select=True), + 'product_template_id' : fields.many2one('product.template', 'Product Template', required=True, ondelete='cascade', select=True), 'delay' : fields.integer('Delivery Lead Time', required=True, help="Lead time in days between the confirmation of the purchase order and the reception of the products in your warehouse. Used by the scheduler for automatic computation of the purchase order planning."), 'pricelist_ids': fields.one2many('pricelist.partnerinfo', 'suppinfo_id', 'Supplier Pricelist'), 'company_id':fields.many2one('res.company','Company',select=1), From ef50bf061bbd0df7c70259d9736dce5b11c6f612 Mon Sep 17 00:00:00 2001 From: sebastien beau Date: Wed, 11 Jul 2012 01:49:48 +0200 Subject: [PATCH 150/349] [FIX] purchase : fix due to refactor done on product module bzr revid: sebastien.beau@akretion.com.br-20120710234948-p87xrwwfbk4r6lc4 --- addons/purchase/purchase.py | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/addons/purchase/purchase.py b/addons/purchase/purchase.py index e74ca83a92b..9f4c57babf9 100644 --- a/addons/purchase/purchase.py +++ b/addons/purchase/purchase.py @@ -917,15 +917,15 @@ class purchase_order_line(osv.osv): qty = qty or 1.0 supplierinfo = False - supplierinfo_ids = product_supplierinfo.search(cr, uid, [('name','=',partner_id),('product_id','=',product.id)]) - if supplierinfo_ids: - supplierinfo = product_supplierinfo.browse(cr, uid, supplierinfo_ids[0], context=context) - if supplierinfo.product_uom.id != uom_id: - res['warning'] = {'title': _('Warning'), 'message': _('The selected supplier only sells this product by %s') % supplierinfo.product_uom.name } - min_qty = product_uom._compute_qty(cr, uid, supplierinfo.product_uom.id, supplierinfo.min_qty, to_uom_id=uom_id) - if qty < min_qty: # If the supplier quantity is greater than entered from user, set minimal. - res['warning'] = {'title': _('Warning'), 'message': _('The selected supplier has a minimal quantity set to %s %s, you should not purchase less.') % (supplierinfo.min_qty, supplierinfo.product_uom.name)} - qty = min_qty + for supplier in product.seller_ids: + if supplier.name.id == partner_id: + supplierinfo = supplier + if supplierinfo.product_uom.id != uom_id: + res['warning'] = {'title': _('Warning'), 'message': _('The selected supplier only sells this product by %s') % supplierinfo.product_uom.name } + min_qty = product_uom._compute_qty(cr, uid, supplierinfo.product_uom.id, supplierinfo.min_qty, to_uom_id=uom_id) + if qty < min_qty: # If the supplier quantity is greater than entered from user, set minimal. + res['warning'] = {'title': _('Warning'), 'message': _('The selected supplier has a minimal quantity set to %s %s, you should not purchase less.') % (supplierinfo.min_qty, supplierinfo.product_uom.name)} + qty = min_qty dt = self._get_date_planned(cr, uid, supplierinfo, date_order, context=context).strftime(DEFAULT_SERVER_DATETIME_FORMAT) From 7f28916d734eb9dc2522ca6a478dbe5a027414f1 Mon Sep 17 00:00:00 2001 From: sebastien beau Date: Wed, 11 Jul 2012 02:28:17 +0200 Subject: [PATCH 151/349] [FIX] purchase : manual or automatic purchase should have the same description for line always the partner_ref bzr revid: sebastien.beau@akretion.com.br-20120711002817-pupfagnty0so015e --- addons/purchase/purchase.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/purchase/purchase.py b/addons/purchase/purchase.py index 9f4c57babf9..3f351d3fc8f 100644 --- a/addons/purchase/purchase.py +++ b/addons/purchase/purchase.py @@ -895,7 +895,7 @@ class purchase_order_line(osv.osv): lang = res_partner.browse(cr, uid, partner_id).lang context_partner = {'lang': lang, 'partner_id': partner_id} product = product_product.browse(cr, uid, product_id, context=context_partner) - res['value'].update({'name': product.name, 'notes': notes or product.description_purchase}) + res['value'].update({'name': product.partner_ref, 'notes': notes or product.description_purchase}) # - set a domain on product_uom res['domain'] = {'product_uom': [('category_id','=',product.uom_id.category_id.id)]} From d5e57ecdf5c37d4c0f64d2075ed87c4419323237 Mon Sep 17 00:00:00 2001 From: Paramjit Singh Sahota Date: Wed, 11 Jul 2012 10:34:25 +0530 Subject: [PATCH 152/349] [MERGE] Bounce effect on QUICK CREATE[+] Button in KANBAN VIEW. bzr revid: psa@tinyerp.com-20120711050425-eiywgtwi0upzmm80 --- addons/web_kanban/static/src/js/kanban.js | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/addons/web_kanban/static/src/js/kanban.js b/addons/web_kanban/static/src/js/kanban.js index 8dde2efe7c3..56612f3bf08 100644 --- a/addons/web_kanban/static/src/js/kanban.js +++ b/addons/web_kanban/static/src/js/kanban.js @@ -417,9 +417,13 @@ instance.web_kanban.KanbanGroup = instance.web.OldWidget.extend({ }); var click_column = this.$element.find('.oe_kanban_add'); click_column.addClass('oe_kanban_quick_create_bounce'); - this.$records.click(function() { + this.$records.click(function(e) { + var $target = e.target; + var $currenttarget = e.currentTarget; + if ($target == $currenttarget) { self.view.do_bounce(click_column); - }); + } + }); this.$records.find('.oe_kanban_show_more').click(this.do_show_more); if (this.state.folded) { this.do_toggle_fold(); From 90eced57d27949e7f2ed541ca4c39a888facd181 Mon Sep 17 00:00:00 2001 From: "Jiten (OpenERP)" Date: Wed, 11 Jul 2012 12:20:00 +0530 Subject: [PATCH 153/349] [IMP] Improved code for bounce effect on wrong click area. bzr revid: jra@tinyerp.com-20120711065000-jf3x8xca67jbsdzo --- addons/web/static/src/js/view_form.js | 27 +++++++++++------------ addons/web/static/src/js/view_list.js | 11 +++++---- addons/web_kanban/static/src/js/kanban.js | 15 +++++-------- 3 files changed, 24 insertions(+), 29 deletions(-) diff --git a/addons/web/static/src/js/view_form.js b/addons/web/static/src/js/view_form.js index 2a4b707f71e..49987151528 100644 --- a/addons/web/static/src/js/view_form.js +++ b/addons/web/static/src/js/view_form.js @@ -92,7 +92,7 @@ instance.web.FormView = instance.web.View.extend(instance.web.form.FieldManagerM this._super(); }, on_loaded: function(data) { - var self = this; + var self = this; if (!data) { throw new Error("No data provided."); } @@ -284,21 +284,20 @@ instance.web.FormView = instance.web.View.extend(instance.web.form.FieldManagerM } this._super(); }, - on_invalidclick : function (){ + on_wrong_click : function (){ var self = this; var div = $("
", {id:"bounce"}); this.$element.find(".oe_form_field, .oe_form_group_cell").click(function (e) { - $(".oe_form_button_edit").wrap(div); - $("#bounce").addClass('oe_bounce_button_left'); - var val_bounce = $(".oe_form_button_edit"); - self.do_bounce(val_bounce); - e.stopImmediatePropagation(); - }); - + $(".oe_form_button_edit").wrap(div); + $("#bounce").addClass('oe_bounce_button_left'); + var edit_btn = $(".oe_form_button_edit"); + self.do_bounce(edit_btn); + e.stopImmediatePropagation(); + }); }, on_record_loaded: function(record) { - var self = this, set_values = []; - self.on_invalidclick(); + var self = this, set_values = []; + self.on_wrong_click(); if (!record) { this.do_warn("Form", "The record could not be found in the database.", true); return $.Deferred().reject(); @@ -599,8 +598,8 @@ instance.web.FormView = instance.web.View.extend(instance.web.form.FieldManagerM on_button_save: function() { var self = this; return this.do_save().then(function(result) { - self.set({mode: "view"}); - self.on_invalidclick(); + self.set({mode: "view"}); + self.on_wrong_click(); }); }, @@ -2996,7 +2995,7 @@ instance.web.form.FieldOne2Many = instance.web.form.AbstractField.extend({ return def; }, reload_current_view: function() { - var self = this; + var self = this; return self.is_loaded = self.is_loaded.pipe(function() { var active_view = self.viewmanager.active_view; var view = self.viewmanager.views[active_view].controller; diff --git a/addons/web/static/src/js/view_list.js b/addons/web/static/src/js/view_list.js index 7bf9d4ad6bf..0cb6118af3f 100644 --- a/addons/web/static/src/js/view_list.js +++ b/addons/web/static/src/js/view_list.js @@ -984,13 +984,12 @@ instance.web.ListView.List = instance.web.Class.extend( /** @lends instance.web. throw "Could not find id in dataset" } self.row_clicked(e); - } - else{ - if (opts.options.$buttons){ - var bounce_val = $(opts.options.$buttons.find('.oe_list_add')); - self.view.do_bounce(bounce_val); - } + } else { + if (opts.options.$buttons) { + var create_btn = $(opts.options.$buttons.find('.oe_list_add')); + self.view.do_bounce(create_btn); } + } }); }, row_clicked: function (e, view) { diff --git a/addons/web_kanban/static/src/js/kanban.js b/addons/web_kanban/static/src/js/kanban.js index 56612f3bf08..9b80e533d7f 100644 --- a/addons/web_kanban/static/src/js/kanban.js +++ b/addons/web_kanban/static/src/js/kanban.js @@ -415,15 +415,12 @@ instance.web_kanban.KanbanGroup = instance.web.OldWidget.extend({ self.quick.appendTo($(".oe_kanban_group_list_header", self.$records)); self.quick.focus(); }); - var click_column = this.$element.find('.oe_kanban_add'); - click_column.addClass('oe_kanban_quick_create_bounce'); - this.$records.click(function(e) { - var $target = e.target; - var $currenttarget = e.currentTarget; - if ($target == $currenttarget) { - self.view.do_bounce(click_column); - } - }); + var add_btn = this.$element.find('.oe_kanban_add'); + this.$records.click(function (ev) { + if (ev.target == ev.currentTarget) { + self.view.do_bounce(add_btn); + } + }); this.$records.find('.oe_kanban_show_more').click(this.do_show_more); if (this.state.folded) { this.do_toggle_fold(); From e0a62b4bed7b1c883650859d87af84aff021f51b Mon Sep 17 00:00:00 2001 From: Xavier Morel Date: Wed, 11 Jul 2012 10:11:16 +0200 Subject: [PATCH 154/349] [FIX] modifiers handling in list view, add class for readonly fields bzr revid: xmo@openerp.com-20120711081116-ao854p4ebsgyelp3 --- addons/web/static/src/js/view_list.js | 23 ++++++++++++++++------- addons/web/static/src/xml/base.xml | 7 ++++--- 2 files changed, 20 insertions(+), 10 deletions(-) diff --git a/addons/web/static/src/js/view_list.js b/addons/web/static/src/js/view_list.js index aa7ffdb66d4..6a364d65f81 100644 --- a/addons/web/static/src/js/view_list.js +++ b/addons/web/static/src/js/view_list.js @@ -405,20 +405,27 @@ instance.web.ListView = instance.web.View.extend( /** @lends instance.web.ListVi if (column.modifiers) { var modifiers = JSON.parse(column.modifiers); column.modifiers_for = function (fields) { - if (!modifiers.invisible) { - return {}; + var out = {}; + + for (var attr in modifiers) { + if (!modifiers.hasOwnProperty(attr)) { continue; } + var modifier = modifiers[attr]; + out[attr] = _.isBoolean(modifier) + ? modifier + : domain_computer(modifier, fields); } - return { - 'invisible': domain_computer(modifiers.invisible, fields) - }; + + return out; }; if (modifiers['tree_invisible']) { column.invisible = '1'; } else { delete column.invisible; } + column.modifiers = modifiers; } else { column.modifiers_for = noop; + column.modifiers = {}; } return column; }; @@ -430,10 +437,12 @@ instance.web.ListView = instance.web.View.extend( /** @lends instance.web.ListVi if (grouped) { this.columns.unshift({ id: '_group', tag: '', string: _t("Group"), meta: true, - modifiers_for: function () { return {}; } + modifiers_for: function () { return {}; }, + modifiers: {} }, { id: '_count', tag: '', string: '#', meta: true, - modifiers_for: function () { return {}; } + modifiers_for: function () { return {}; }, + modifiers: {} }); } diff --git a/addons/web/static/src/xml/base.xml b/addons/web/static/src/xml/base.xml index ec5f9c6d9de..1a8c420fa18 100644 --- a/addons/web/static/src/xml/base.xml +++ b/addons/web/static/src/xml/base.xml @@ -641,6 +641,7 @@
+ From 6cc7bfc593b2db8ac4b9ce4e4b31805b6b50df19 Mon Sep 17 00:00:00 2001 From: sebastien beau Date: Wed, 11 Jul 2012 10:39:42 +0200 Subject: [PATCH 155/349] [FIX] product : fix demo data due to refactor done before bzr revid: sebastien.beau@akretion.com.br-20120711083942-7lgvt13cr3apdrjk --- addons/product/product_demo.xml | 56 ++++++++++++++++----------------- 1 file changed, 28 insertions(+), 28 deletions(-) diff --git a/addons/product/product_demo.xml b/addons/product/product_demo.xml index a331d5c8b6b..3bd67ca7e61 100644 --- a/addons/product/product_demo.xml +++ b/addons/product/product_demo.xml @@ -693,112 +693,112 @@ 10 1 - + 5 10 1 - + 5 1 1 - + 1 1 1 - + 1 1 1 - + 2 1 1 - + 2 1 1 - + 2 1 1 - + 1 1 1 - + 1 1 1 - + 1 1 1 - + 1 1 1 - + 1 1 1 - + 1 1 1 - + 5 1 1 - + 5 1 1 - + 5 @@ -806,7 +806,7 @@ 10 1 5 - + 5 @@ -814,7 +814,7 @@ 10 1 5 - + 5 @@ -822,7 +822,7 @@ 10 1 5 - + 5 @@ -831,7 +831,7 @@ --> - + 5 1 @@ -839,7 +839,7 @@ - + 5 1 @@ -847,7 +847,7 @@ - + 5 1 @@ -855,7 +855,7 @@ - + 5 1 @@ -863,7 +863,7 @@ - + 5 1 @@ -871,7 +871,7 @@ - + 5 1 @@ -879,7 +879,7 @@ - + 2 1 @@ -887,7 +887,7 @@ - + 5 1 @@ -895,7 +895,7 @@ - + 5 1 From af5cd045f29ac3b7b696f8a19d87d32318d00cc1 Mon Sep 17 00:00:00 2001 From: Xavier Morel Date: Wed, 11 Jul 2012 10:59:26 +0200 Subject: [PATCH 156/349] [DOC] doc bzr revid: xmo@openerp.com-20120711085926-dnsdnqmrd1tvl2oo --- doc/list-view.rst | 129 ++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 124 insertions(+), 5 deletions(-) diff --git a/doc/list-view.rst b/doc/list-view.rst index 28f22ab7ad4..9e21fa38791 100644 --- a/doc/list-view.rst +++ b/doc/list-view.rst @@ -1,6 +1,79 @@ List View ========= +Style Hooks +----------- + +The list view provides a few style hook classes for re-styling of list views in +various situations: + +``.oe-listview`` + + The root element of the list view, styling rules should be rooted + on that class. + +``table.oe-listview-content`` + + The root table for the listview, accessory components may be + generated or added outside this section, this is the list view + "proper". + +``.oe_list_buttons`` + + The action buttons array for the list view, with its sub-elements + + ``.oe_list_add`` + + The default "Create"/"Add" button of the list view + + ``.oe_alternative`` + + The "alternative choice" for the list view, by default text + along the lines of "or import" with a link. + +``.oe-field-cell`` + + The cell (``td``) for a given field of the list view, cells which + are *not* fields (e.g. name of a group, or number of items in a + group) will not have this class. The field cell can be further + specified: + + ``.oe_number`` + + Numeric cell types (integer and float) + + ``.oe-button`` + + Action button (``button`` tag in the view) inside the cell + + ``.oe_readonly`` + + Readonly field cell + +``.oe-record-selector`` + + Selector cells + +Editable list view +++++++++++++++++++ + +The editable list view module adds a few supplementary style hook +classes, for edition situations: + +``.oe_editing`` + + Added to both ``.oe-listview`` and ``.oe_list_button`` (as the + buttons may be outside of the list view) when a row of the list is + currently being edited. + +``tr.oe_edition`` + + Class set on the row being edited itself. Note that the edition + form is *not* contained within the row, this allows for styling or + modifying the row while it's being edited separately. Mostly for + fields which can not be edited (e.g. read-only fields). + + Editable list view ------------------ @@ -30,7 +103,7 @@ view. ``options.read_only`` - worthless shit added by niv in the listview directly (wtf?) + force options.editable to false, or something? .. note:: can probably be replaced by cancelling ``edit:before`` @@ -172,6 +245,20 @@ view provides a number of dedicated events to its lifecycle. Invoked after a pending edition has been cancelled. +DOM events +++++++++++ + +The list view has grown hooks for the ``keyup`` event on its edition +form (during edition): any such event bubbling out of the edition form +will be forwarded to a method ``keyup_EVENTNAME``, where ``EVENTNAME`` +is the name of the key in ``$.ui.keyCode``. + +The method will also get the event object (originally passed to the +``keyup`` handler) as its sole parameter. + +The base editable list view has handlers for the ``ENTER`` and +``ESCAPE`` keys. + Editor ------ @@ -299,8 +386,40 @@ Changes from 6.1 :js:class:`~openerp.web.ListView.List` for editability has been drastically simplified, and most of the behavior has been moved to the list view itself. Only - :js:function:`~openerp.web.ListView.List.edit_record` remains from - the methods previously added, and only - :js:function:`~openerp.web.ListView.List.row_clicked` and - :js:function:`~openerp.web.ListView.List.init` are still + :js:func:`~openerp.web.ListView.List.row_clicked` is still overridden. + + * A new method ``getRowFor(record) -> jQuery(tr) | null`` has been + added to both ListView.List and ListView.Group, it can be called + from the list view to get the table row matching a record (if such + a row exists). + +* ``ListView#ensure_saved`` has been re-capitalized to + :js:func:`~openerp.web.ListView.ensureSaved` + +* :js:func:`~openerp.web.ListView.do_button_action`'s core behavior + has been split away to + :js:func:`~openerp.web.ListView.handleButton`. This allows bypassing + overrides of :js:func:`~openerp.web.ListView.do_button_action` in a + parent class. + + Ideally, :js:func:`~openerp.web.ListView.handleButton` should not be + overridden. + +* Modifiers handling has been improved (all modifiers information + should now be available through :js:func:`~Column.modifiers_for`, + not just ``invisible``) + +* Changed some handling of the list view's record: a record may now + have no id, and the listview will handle that correctly (for new + records being created) as well as correctly handle the ``id`` being + set. + +* Extended the internal collections structure of the list view with + `#find`_, `#succ`_ and `#pred`_. + +.. _#find: http://underscorejs.org/#find + +.. _#succ: http://hackage.haskell.org/packages/archive/base/latest/doc/html/Prelude.html#v:succ + +.. _#pred: http://hackage.haskell.org/packages/archive/base/latest/doc/html/Prelude.html#v:pred From fc0e0b056339ad8750d07e5e13838a6ff9a4c397 Mon Sep 17 00:00:00 2001 From: sebastien beau Date: Wed, 11 Jul 2012 11:43:51 +0200 Subject: [PATCH 157/349] [FIX] mrp fix demo data due to previous refactor bzr revid: sebastien.beau@akretion.com.br-20120711094351-nn21w9odo13k14t0 --- addons/mrp/mrp_demo.xml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/addons/mrp/mrp_demo.xml b/addons/mrp/mrp_demo.xml index 68fe21ea16c..a008b2a1dee 100644 --- a/addons/mrp/mrp_demo.xml +++ b/addons/mrp/mrp_demo.xml @@ -930,7 +930,7 @@ - + 1.0 @@ -945,7 +945,7 @@ - + 2.0 @@ -960,7 +960,7 @@ - + 2.0 @@ -1050,7 +1050,7 @@ - + 300.0 @@ -1065,7 +1065,7 @@ - + 100.0 From c0e9d320f3b4fc53f914cd4af90d834f16aadfae Mon Sep 17 00:00:00 2001 From: Xavier Morel Date: Wed, 11 Jul 2012 12:17:40 +0200 Subject: [PATCH 158/349] [ADD] one more styling hook for the exact type of the field rendered in the cell bzr revid: xmo@openerp.com-20120711101740-8po45qujkny5gk6a --- addons/web/static/src/xml/base.xml | 2 +- doc/list-view.rst | 6 ++++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/addons/web/static/src/xml/base.xml b/addons/web/static/src/xml/base.xml index 1a8c420fa18..8eee2bcc6bb 100644 --- a/addons/web/static/src/xml/base.xml +++ b/addons/web/static/src/xml/base.xml @@ -656,7 +656,7 @@ diff --git a/doc/list-view.rst b/doc/list-view.rst index 9e21fa38791..475d5678b79 100644 --- a/doc/list-view.rst +++ b/doc/list-view.rst @@ -50,6 +50,12 @@ various situations: Readonly field cell + ``.oe_list_field_$type`` + + Additional class for the precise type of the cell, ``$type`` + is the field's @widget if there is one, otherwise it's the + field's type. + ``.oe-record-selector`` Selector cells From 3efc9c033a7f9b2a1d032951785ff5a94ecdbe6c Mon Sep 17 00:00:00 2001 From: Xavier Morel Date: Wed, 11 Jul 2012 13:10:27 +0200 Subject: [PATCH 159/349] [ADD] create new record when clicking on an empty row bzr revid: xmo@openerp.com-20120711111027-6vtyoxx17fw8dmvc --- addons/web/static/src/js/view_list.js | 2 +- addons/web/static/src/js/view_list_editable.js | 7 +++++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/addons/web/static/src/js/view_list.js b/addons/web/static/src/js/view_list.js index 6a364d65f81..92b633bf54d 100644 --- a/addons/web/static/src/js/view_list.js +++ b/addons/web/static/src/js/view_list.js @@ -1006,9 +1006,9 @@ instance.web.ListView.List = instance.web.Class.extend( /** @lends instance.web. e.stopPropagation(); }) .delegate('tr', 'click', function (e) { - e.stopPropagation(); var row_id = self.row_id(e.currentTarget); if (row_id !== undefined) { + e.stopPropagation(); if (!self.dataset.select_id(row_id)) { throw "Could not find id in dataset" } diff --git a/addons/web/static/src/js/view_list_editable.js b/addons/web/static/src/js/view_list_editable.js index b225af4cb0c..cbcd74cc31c 100644 --- a/addons/web/static/src/js/view_list_editable.js +++ b/addons/web/static/src/js/view_list_editable.js @@ -104,6 +104,13 @@ openerp.web.list_editable = function (instance) { this.$buttons .off('click', 'button.oe_list_save') .on('click', 'button.oe_list_save', this.proxy('saveEdition')); + this.$element + .off('click', 'tbody tr') + .on('click', 'tbody tr', function () { + if (!self.editor.isEditing()) { + self.startEdition(); + } + }); // Editor is not restartable due to formview not being // restartable this.editor = this.makeEditor(); From cd02216c28a0530f3d56369566645a6dbaefcfe4 Mon Sep 17 00:00:00 2001 From: Xavier Morel Date: Wed, 11 Jul 2012 14:24:24 +0200 Subject: [PATCH 160/349] [FIX] selector for edit-on-click-on-empty-row bzr revid: xmo@openerp.com-20120711122424-355c6ed4vnmrr69n --- addons/web/static/src/js/view_list_editable.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/addons/web/static/src/js/view_list_editable.js b/addons/web/static/src/js/view_list_editable.js index cbcd74cc31c..a78b0fbef97 100644 --- a/addons/web/static/src/js/view_list_editable.js +++ b/addons/web/static/src/js/view_list_editable.js @@ -105,8 +105,8 @@ openerp.web.list_editable = function (instance) { .off('click', 'button.oe_list_save') .on('click', 'button.oe_list_save', this.proxy('saveEdition')); this.$element - .off('click', 'tbody tr') - .on('click', 'tbody tr', function () { + .off('click', 'tbody td:not(.oe_list_field_cell)') + .on('click', 'tbody td:not(.oe_list_field_cell)', function () { if (!self.editor.isEditing()) { self.startEdition(); } From 9b570343a52669fb5206fdb58051d1f4febc031f Mon Sep 17 00:00:00 2001 From: Xavier Morel Date: Wed, 11 Jul 2012 15:18:04 +0200 Subject: [PATCH 161/349] [FIX] handling of clicking on a row for a record being created (and not existing yet) bzr revid: xmo@openerp.com-20120711131804-u8l2taeq2k1gc5v0 --- addons/web/static/src/js/view_list.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/addons/web/static/src/js/view_list.js b/addons/web/static/src/js/view_list.js index 4d2d1b4245f..2bbb9e87866 100644 --- a/addons/web/static/src/js/view_list.js +++ b/addons/web/static/src/js/view_list.js @@ -1013,10 +1013,10 @@ instance.web.ListView.List = instance.web.Class.extend( /** @lends instance.web. }) .delegate('tr', 'click', function (e) { var row_id = self.row_id(e.currentTarget); - if (row_id !== undefined) { + if (row_id) { e.stopPropagation(); if (!self.dataset.select_id(row_id)) { - throw "Could not find id in dataset" + throw new Error("Could not find id in dataset"); } self.row_clicked(e); } From a899b40b597c74b08a2c66fc486ac1f6bcfa5bca Mon Sep 17 00:00:00 2001 From: "Jiten (OpenERP)" Date: Wed, 11 Jul 2012 19:01:24 +0530 Subject: [PATCH 162/349] [IMP] Improved scrolling when scrolltop/scrollleft are not in range for bounce button. bzr revid: jra@tinyerp.com-20120711133124-j84maefl1b21i2jo --- addons/web/static/src/js/view_form.js | 6 ++++++ addons/web_kanban/static/src/js/kanban.js | 3 +++ 2 files changed, 9 insertions(+) diff --git a/addons/web/static/src/js/view_form.js b/addons/web/static/src/js/view_form.js index 49987151528..b17d05da165 100644 --- a/addons/web/static/src/js/view_form.js +++ b/addons/web/static/src/js/view_form.js @@ -291,6 +291,12 @@ instance.web.FormView = instance.web.View.extend(instance.web.form.FieldManagerM $(".oe_form_button_edit").wrap(div); $("#bounce").addClass('oe_bounce_button_left'); var edit_btn = $(".oe_form_button_edit"); + if (jQuery(window).scrollTop() > 75 ) { + $('body,html').animate({ scrollTop: 0 }, 200); + } + if (jQuery(window).scrollLeft() > 225 ) { + $('body,html').animate({ scrollLeft: 0 }, 200); + } self.do_bounce(edit_btn); e.stopImmediatePropagation(); }); diff --git a/addons/web_kanban/static/src/js/kanban.js b/addons/web_kanban/static/src/js/kanban.js index 9b80e533d7f..903b4d32840 100644 --- a/addons/web_kanban/static/src/js/kanban.js +++ b/addons/web_kanban/static/src/js/kanban.js @@ -418,6 +418,9 @@ instance.web_kanban.KanbanGroup = instance.web.OldWidget.extend({ var add_btn = this.$element.find('.oe_kanban_add'); this.$records.click(function (ev) { if (ev.target == ev.currentTarget) { + if (jQuery(window).scrollTop() > 120 ) { + $('body,html').animate({ scrollTop: 0 }, 200); + } self.view.do_bounce(add_btn); } }); From 6b907bb4d0421bc1c408846dec7c2a57a778cca6 Mon Sep 17 00:00:00 2001 From: Xavier Morel Date: Wed, 11 Jul 2012 16:14:02 +0200 Subject: [PATCH 163/349] [FIX] can't perform action on a o2m record which is not saved in db, so forbid it. Also yet-another-shitty-undoc-change to the way widgets and form view communicate bzr revid: xmo@openerp.com-20120711141402-1x7frd0v3vc3649e --- addons/web/static/src/js/view_form.js | 22 ++++++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) diff --git a/addons/web/static/src/js/view_form.js b/addons/web/static/src/js/view_form.js index 0211b934a4e..e6e78a46ab8 100644 --- a/addons/web/static/src/js/view_form.js +++ b/addons/web/static/src/js/view_form.js @@ -3196,6 +3196,11 @@ instance.web.form.One2ManyListView = instance.web.ListView.extend({ })); this.on('edit:before', this, this.proxy('_beforeEdit')); this.on('save:before cancel:before', this, this.proxy('_beforeUnEdit')); + + this.records + .bind('add', this.proxy("changedRecords")) + .bind('edit', this.proxy("changedRecords")) + .bind('remove', this.proxy("changedRecords")); }, start: function () { var ret = this._super(); @@ -3204,6 +3209,9 @@ instance.web.form.One2ManyListView = instance.web.ListView.extend({ .on('mousedown.handleButtons', 'table button', this.proxy('_buttonDown')); return ret; }, + changedRecords: function () { + this.o2m.trigger_on_change(); + }, is_valid: function () { var form = this.editor.form; @@ -3276,13 +3284,19 @@ instance.web.form.One2ManyListView = instance.web.ListView.extend({ readonly: self.o2m.get("effective_readonly") }); }, - do_button_action: function () { + do_button_action: function (name, id, callback) { + if (!_.isNumber(id)) { + instance.webclient.notification.warn( + _t("Action Button"), + _t("The o2m record must be saved before an action can be used")); + return; + } var parent_form = this.o2m.view; - var self = this, args = arguments; - return this.ensureSaved().pipe(function () { + var self = this; + this.ensureSaved().pipe(function () { return parent_form.do_save(); }).then(function () { - self.handleButton.apply(self, args); + self.handleButton(name, id, callback); }); }, From 16559cd6aed2867a4d45621e2ccff0644957c06c Mon Sep 17 00:00:00 2001 From: Xavier Morel Date: Wed, 11 Jul 2012 16:20:48 +0200 Subject: [PATCH 164/349] [ADD] discard 'link-ish' to editable list view bzr revid: xmo@openerp.com-20120711142048-covvchmiscjlhji0 --- addons/web/static/src/css/base.css | 7 +++++-- addons/web/static/src/css/base.sass | 6 ++++-- addons/web/static/src/js/view_list_editable.js | 9 +++++++-- addons/web/static/src/xml/base.xml | 3 +++ 4 files changed, 19 insertions(+), 6 deletions(-) diff --git a/addons/web/static/src/css/base.css b/addons/web/static/src/css/base.css index 7ea01bf3bee..6e5c6117023 100644 --- a/addons/web/static/src/css/base.css +++ b/addons/web/static/src/css/base.css @@ -2179,15 +2179,18 @@ .openerp .oe_form .oe_form_field_many2many > .oe_list .oe_list_pager_single_page { display: none; } -.openerp .oe_list_buttons .oe_list_save { +.openerp .oe_list_buttons .oe_list_save, .openerp .oe_list_buttons .oe_list_discard { display: none; } -.openerp .oe_list_buttons.oe_editing .oe_list_add, .openerp .oe_list_buttons.oe_editing .oe_alternative { +.openerp .oe_list_buttons.oe_editing .oe_list_add, .openerp .oe_list_buttons.oe_editing .oe_list_button_import { display: none; } .openerp .oe_list_buttons.oe_editing .oe_list_save { display: inline-block; } +.openerp .oe_list_buttons.oe_editing .oe_list_discard { + display: inline; +} .openerp .oe_list { position: relative; } diff --git a/addons/web/static/src/css/base.sass b/addons/web/static/src/css/base.sass index 0472aa34710..83153cc11d5 100644 --- a/addons/web/static/src/css/base.sass +++ b/addons/web/static/src/css/base.sass @@ -1723,13 +1723,15 @@ $sheet-max-width: 860px // }}} // ListView {{{ .oe_list_buttons - .oe_list_save + .oe_list_save, .oe_list_discard display: none &.oe_editing - .oe_list_add, .oe_alternative + .oe_list_add, .oe_list_button_import display: none .oe_list_save display: inline-block + .oe_list_discard + display: inline .oe_list position: relative diff --git a/addons/web/static/src/js/view_list_editable.js b/addons/web/static/src/js/view_list_editable.js index a78b0fbef97..93b7d38e3bb 100644 --- a/addons/web/static/src/js/view_list_editable.js +++ b/addons/web/static/src/js/view_list_editable.js @@ -102,8 +102,13 @@ openerp.web.list_editable = function (instance) { if (this.options.editable) { // FIXME: any hook available to ensure this is only done once? this.$buttons - .off('click', 'button.oe_list_save') - .on('click', 'button.oe_list_save', this.proxy('saveEdition')); + .off('click', '.oe_list_save') + .on('click', '.oe_list_save', this.proxy('saveEdition')) + .off('click', '.oe_list_discard') + .on('click', '.oe_list_discard', function (e) { + e.preventDefault(); + self.cancelEdition(); + }); this.$element .off('click', 'tbody td:not(.oe_list_field_cell)') .on('click', 'tbody td:not(.oe_list_field_cell)', function () { diff --git a/addons/web/static/src/xml/base.xml b/addons/web/static/src/xml/base.xml index a85e8817ad8..a9c8e15bcd7 100644 --- a/addons/web/static/src/xml/base.xml +++ b/addons/web/static/src/xml/base.xml @@ -671,6 +671,9 @@ + + discard + From ce11683e9240a56cf1ab3f27bf93c534528db9e6 Mon Sep 17 00:00:00 2001 From: Xavier Morel Date: Wed, 11 Jul 2012 16:26:04 +0200 Subject: [PATCH 165/349] [FIX] re-enable delete button for o2m list items bzr revid: xmo@openerp.com-20120711142604-9jw3kikvqje8reu6 --- addons/web/static/src/js/view_form.js | 1 + 1 file changed, 1 insertion(+) diff --git a/addons/web/static/src/js/view_form.js b/addons/web/static/src/js/view_form.js index e6e78a46ab8..be30abe5aba 100644 --- a/addons/web/static/src/js/view_form.js +++ b/addons/web/static/src/js/view_form.js @@ -2915,6 +2915,7 @@ instance.web.form.FieldOne2Many = instance.web.form.AbstractField.extend({ selectable: self.multi_selection, sortable: false, import_enabled: false, + deletable: true }); if (self.get("effective_readonly")) { _.extend(view.options, { From 8812a84ba825ff09153065cdd7e1a939d57d5f68 Mon Sep 17 00:00:00 2001 From: Xavier Morel Date: Wed, 11 Jul 2012 16:32:13 +0200 Subject: [PATCH 166/349] [FIX] don't let [Return] key hit in a text field bubble, or it validates editable list rows bzr revid: xmo@openerp.com-20120711143213-ug1u98evn6nxhi5r --- addons/web/static/src/js/view_form.js | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/addons/web/static/src/js/view_form.js b/addons/web/static/src/js/view_form.js index be30abe5aba..d10990b1717 100644 --- a/addons/web/static/src/js/view_form.js +++ b/addons/web/static/src/js/view_form.js @@ -2250,6 +2250,11 @@ instance.web.form.FieldText = instance.web.form.AbstractField.extend(instance.we } else { this.$textarea.attr('disabled', 'disabled'); } + this.$element.keyup(function (e) { + if (e.which === $.ui.keyCode.ENTER) { + e.stopPropagation(); + } + }); this.setupFocus(this.$textarea); }, set_value: function(value_) { From 35b5732bba91544b99c63a2ef57c769758cd4f0c Mon Sep 17 00:00:00 2001 From: Xavier Morel Date: Wed, 11 Jul 2012 16:43:27 +0200 Subject: [PATCH 167/349] [IMP] keep 'save row' button hidden in o2m list bzr revid: xmo@openerp.com-20120711144327-gyhad79cmd730tb4 --- addons/web/static/src/css/base.css | 3 +++ addons/web/static/src/css/base.sass | 3 +++ 2 files changed, 6 insertions(+) diff --git a/addons/web/static/src/css/base.css b/addons/web/static/src/css/base.css index 6e5c6117023..2d27b380386 100644 --- a/addons/web/static/src/css/base.css +++ b/addons/web/static/src/css/base.css @@ -2176,6 +2176,9 @@ height: auto; line-height: 16px; } +.openerp .oe_form_field_one2many .oe_list_buttons.oe_editing .oe_list_save { + visibility: hidden; +} .openerp .oe_form .oe_form_field_many2many > .oe_list .oe_list_pager_single_page { display: none; } diff --git a/addons/web/static/src/css/base.sass b/addons/web/static/src/css/base.sass index 83153cc11d5..52b28b7da4f 100644 --- a/addons/web/static/src/css/base.sass +++ b/addons/web/static/src/css/base.sass @@ -1715,6 +1715,9 @@ $sheet-max-width: 860px li height: auto line-height: 16px + .oe_list_buttons.oe_editing .oe_list_save + // keep "save row" button hidden in o2m + visibility: hidden // }}} // FormView.many2many {{{ .oe_form .oe_form_field_many2many > .oe_list From 4db49fc84d6164c9648cb8a496ea456c5d98dc07 Mon Sep 17 00:00:00 2001 From: "Ajay Chauhan (OpenERP)" Date: Thu, 12 Jul 2012 11:50:15 +0530 Subject: [PATCH 168/349] [IMP] : update description bzr revid: cha@tinyerp.com-20120712062015-vz3w55yen0y2ixaw --- addons/account_anglo_saxon/__openerp__.py | 3 ++- addons/account_asset/__openerp__.py | 1 + .../__openerp__.py | 1 + addons/account_budget/__openerp__.py | 1 + addons/account_check_writing/__openerp__.py | 2 +- addons/account_coda/__openerp__.py | 1 + addons/account_voucher/__openerp__.py | 1 - .../__openerp__.py | 1 - .../__openerp__.py | 1 - .../analytic_contract_project/__openerp__.py | 2 +- addons/anonymous/__openerp__.py | 2 +- addons/base_crypt/__openerp__.py | 5 +++-- addons/base_status/__openerp__.py | 1 + addons/base_vat/__openerp__.py | 4 ++-- addons/email_template/__openerp__.py | 2 +- addons/event_moodle/__openerp__.py | 9 +++++---- addons/fetchmail/__openerp__.py | 4 ++-- addons/google_base_account/__openerp__.py | 2 +- addons/hr_timesheet_sheet/__openerp__.py | 18 +++++++++--------- addons/mail/__openerp__.py | 2 +- 20 files changed, 34 insertions(+), 29 deletions(-) diff --git a/addons/account_anglo_saxon/__openerp__.py b/addons/account_anglo_saxon/__openerp__.py index 78b2ff825c6..e6987ab6a0e 100644 --- a/addons/account_anglo_saxon/__openerp__.py +++ b/addons/account_anglo_saxon/__openerp__.py @@ -30,9 +30,10 @@ This module supports the Anglo-Saxon accounting methodology by changing the acco The difference between the Anglo-Saxon accounting countries and the Rhine or also called Continental accounting countries is the moment of taking the Cost of Goods Sold versus Cost of Sales. Anglo-Saxons accounting does take the cost when sales invoice is created, Continental accounting will take the cost at the moment the goods are shipped. + This module will add this functionality by using a interim account, to store the value of shipped goods and will contra book this interim account when the invoice is created to transfer this amount to the debtor or creditor account. -Secondly, price differences between actual purchase price and fixed product standard price are booked on a separate account""", +Secondly, price differences between actual purchase price and fixed product standard price are booked on a separate account.""", "images": ["images/account_anglo_saxon.jpeg"], "depends": ["product", "purchase"], "category": "Hidden/Dependency", diff --git a/addons/account_asset/__openerp__.py b/addons/account_asset/__openerp__.py index 7d5863e6fb4..2cf79e9d30d 100644 --- a/addons/account_asset/__openerp__.py +++ b/addons/account_asset/__openerp__.py @@ -27,6 +27,7 @@ "description": """ Financial and accounting asset management. ========================================== + This Module manages the assets owned by a company or an individual. It will keep track of depreciation's occurred on those assets. And it allows to create Move's of the depreciation lines. diff --git a/addons/account_bank_statement_extensions/__openerp__.py b/addons/account_bank_statement_extensions/__openerp__.py index 2f9bc0a87eb..2a31e3388a6 100644 --- a/addons/account_bank_statement_extensions/__openerp__.py +++ b/addons/account_bank_statement_extensions/__openerp__.py @@ -27,6 +27,7 @@ 'category': 'Generic Modules/Accounting', 'description': ''' Module that extends the standard account_bank_statement_line object for improved e-banking support. +=================================================================================================== Adds - valuta date diff --git a/addons/account_budget/__openerp__.py b/addons/account_budget/__openerp__.py index 26de308d088..9e61f7314a7 100644 --- a/addons/account_budget/__openerp__.py +++ b/addons/account_budget/__openerp__.py @@ -36,6 +36,7 @@ Budget in order to ensure the total planned is not greater/lower than what he pl for this Budget. Each list of record can also be switched to a graphical view of it. Three reports are available: + 1. The first is available from a list of Budgets. It gives the spreading, for these Budgets, of the Analytic Accounts. 2. The second is a summary of the previous one, it only gives the spreading, for the selected Budgets, of the Analytic Accounts. diff --git a/addons/account_check_writing/__openerp__.py b/addons/account_check_writing/__openerp__.py index 18ca4e3248c..d07457d0d00 100644 --- a/addons/account_check_writing/__openerp__.py +++ b/addons/account_check_writing/__openerp__.py @@ -24,7 +24,7 @@ "author" : "OpenERP SA, NovaPoint Group", "category": "Generic Modules/Accounting", "description": """ - Module for the Check writing and check printing +Module for the Check writing and check printing. """, 'website': 'http://www.openerp.com', 'init_xml': [], diff --git a/addons/account_coda/__openerp__.py b/addons/account_coda/__openerp__.py index 77d48c43cf1..d6a44bbaba8 100644 --- a/addons/account_coda/__openerp__.py +++ b/addons/account_coda/__openerp__.py @@ -53,6 +53,7 @@ The removal of a CODA File containing multiple Bank Statements will also remove statements. The following reconciliation logic has been implemented in the CODA processing: + 1) The Company's Bank Account Number of the CODA statement is compared against the Bank Account Number field of the Company's CODA Bank Account configuration records (whereby bank accounts defined in type='info' configuration records are ignored). If this is the case an 'internal transfer' transaction is generated using the 'Internal Transfer Account' field of the CODA File Import wizard. 2) As a second step the 'Structured Communication' field of the CODA transaction line is matched against the reference field of in- and outgoing invoices (supported : Belgian Structured Communication Type). 3) When the previous step doesn't find a match, the transaction counterparty is located via the Bank Account Number configured on the OpenERP Customer and Supplier records. diff --git a/addons/account_voucher/__openerp__.py b/addons/account_voucher/__openerp__.py index 888e73ec7c3..177233e5ccc 100644 --- a/addons/account_voucher/__openerp__.py +++ b/addons/account_voucher/__openerp__.py @@ -27,7 +27,6 @@ eInvoicing & Payments module manage all Voucher Entries such as "Reconciliation Entries", "Adjustment Entries", "Closing or Opening Entries" for Sales, Purchase, Bank, Cash, Expense, Contra. ============================================================================================================================================================================================== - * Voucher Entry * Voucher Receipt [Sales & Purchase] * Voucher Payment [Customer & Supplier] diff --git a/addons/analytic_contract_expense_project/__openerp__.py b/addons/analytic_contract_expense_project/__openerp__.py index 9dc4c114743..b569330d117 100644 --- a/addons/analytic_contract_expense_project/__openerp__.py +++ b/addons/analytic_contract_expense_project/__openerp__.py @@ -26,7 +26,6 @@ 'category': 'Hidden', 'description': """ This module is for modifying project view to show some data related to the hr_expense module. -====================================================================================================== """, "author": "OpenERP S.A.", diff --git a/addons/analytic_contract_hr_expense/__openerp__.py b/addons/analytic_contract_hr_expense/__openerp__.py index fb56d3d1749..b5ab6bea9ab 100644 --- a/addons/analytic_contract_hr_expense/__openerp__.py +++ b/addons/analytic_contract_hr_expense/__openerp__.py @@ -26,7 +26,6 @@ 'category': 'Hidden', 'description': """ This module is for modifying account analytic view to show some data related to the hr_expense module. -====================================================================================================== """, "author": "OpenERP S.A.", diff --git a/addons/analytic_contract_project/__openerp__.py b/addons/analytic_contract_project/__openerp__.py index 80300f40f1e..4e4f621663c 100644 --- a/addons/analytic_contract_project/__openerp__.py +++ b/addons/analytic_contract_project/__openerp__.py @@ -27,7 +27,7 @@ "website" : "http://www.openerp.com", "depends" : ["project", "account_analytic_analysis"], "description": """ - Add "Contract Data" in project view. +Add "Contract Data" in project view. """, "init_xml" : [], "update_xml": ["analytic_contract_project_view.xml"], diff --git a/addons/anonymous/__openerp__.py b/addons/anonymous/__openerp__.py index 6babe973aba..3494fca7a9f 100644 --- a/addons/anonymous/__openerp__.py +++ b/addons/anonymous/__openerp__.py @@ -1,6 +1,6 @@ { 'name': 'Anonymous', - 'description': 'Allow anonymous access to OpenERP', + 'description': 'Allow anonymous access to OpenERP.', 'author': 'OpenERP SA', 'version': '1.0', 'category': 'Tools', diff --git a/addons/base_crypt/__openerp__.py b/addons/base_crypt/__openerp__.py index 0930f6da415..efb2c662f04 100644 --- a/addons/base_crypt/__openerp__.py +++ b/addons/base_crypt/__openerp__.py @@ -26,8 +26,9 @@ "website" : "http://www.openerp.com", "category" : "Tools", "description": """ -Replaces cleartext passwords in the database with a secure hash -=============================================================== +Replaces cleartext passwords in the database with a secure hash. +================================================================ + For your existing user base, the removal of the cleartext passwords occurs immediately when you instal base_crypt. diff --git a/addons/base_status/__openerp__.py b/addons/base_status/__openerp__.py index fcb8f54a7ee..bbd82b703ac 100644 --- a/addons/base_status/__openerp__.py +++ b/addons/base_status/__openerp__.py @@ -26,6 +26,7 @@ 'description': """ This module handles state and stage. It is derived from the crm_base and crm_case classes from crm. +======================================================================== * ``base_state``: state management * ``base_stage``: stage management diff --git a/addons/base_vat/__openerp__.py b/addons/base_vat/__openerp__.py index ef46cd800d9..1a14211dbcc 100644 --- a/addons/base_vat/__openerp__.py +++ b/addons/base_vat/__openerp__.py @@ -24,8 +24,8 @@ 'version': '1.0', "category": 'Hidden/Dependency', 'description': """ -VAT validation for Partners' VAT numbers -======================================== +VAT validation for Partners' VAT numbers. +========================================= After installing this module, values entered in the VAT field of Partners will be validated for all supported countries. The country is inferred from the diff --git a/addons/email_template/__openerp__.py b/addons/email_template/__openerp__.py index c426e3ae746..a8303247ec0 100644 --- a/addons/email_template/__openerp__.py +++ b/addons/email_template/__openerp__.py @@ -54,7 +54,7 @@ These email templates are also at the heart of the marketing campaign system campaigns on any OpenERP document. Technical note: only the templating system of the original Power Email by -Openlabs was kept +Openlabs was kept. """, "data": [ diff --git a/addons/event_moodle/__openerp__.py b/addons/event_moodle/__openerp__.py index 82fccad0914..954ce7d5bc6 100644 --- a/addons/event_moodle/__openerp__.py +++ b/addons/event_moodle/__openerp__.py @@ -25,7 +25,8 @@ 'version': '0.1', 'category': 'Tools', 'description': """ - Configure your moodle server +Configure your moodle server. +============================= With this module you are able to connect your OpenERP with a moodle plateform. This module will create courses and students automatically in your moodle plateform to avoid wasting time. @@ -37,15 +38,15 @@ STEPS TO CONFIGURE 1. activate web service in moodle ---------------------------------- ->site administration >plugins>web sevices >manage protocols +>site administration >plugins >web sevices >manage protocols activate the xmlrpc web service ->site administration >plugins>web sevices >manage tokens +>site administration >plugins >web sevices >manage tokens create a token ->site administration >plugins>web sevices >overview +>site administration >plugins >web sevices >overview activate webservice diff --git a/addons/fetchmail/__openerp__.py b/addons/fetchmail/__openerp__.py index 5067de7db4c..8c720045197 100644 --- a/addons/fetchmail/__openerp__.py +++ b/addons/fetchmail/__openerp__.py @@ -27,8 +27,8 @@ "author" : "OpenERP SA", "category": 'Tools', "description": """ -Retrieve incoming email on POP / IMAP servers -============================================= +Retrieve incoming email on POP / IMAP servers. +============================================== Enter the parameters of your POP/IMAP account(s), and any incoming emails on these accounts will be automatically downloaded into your OpenERP diff --git a/addons/google_base_account/__openerp__.py b/addons/google_base_account/__openerp__.py index 66b46064097..9dc4a233dcb 100644 --- a/addons/google_base_account/__openerp__.py +++ b/addons/google_base_account/__openerp__.py @@ -24,7 +24,7 @@ 'name': 'Google Users', 'version': '1.0', 'category': 'Tools', - 'description': """The module adds google user in res user""", + 'description': """The module adds google user in res user.""", 'author': 'OpenERP SA', 'website': 'http://www.openerp.com', 'depends': ['base'], diff --git a/addons/hr_timesheet_sheet/__openerp__.py b/addons/hr_timesheet_sheet/__openerp__.py index a6324ac99af..1a3ee5b70bc 100644 --- a/addons/hr_timesheet_sheet/__openerp__.py +++ b/addons/hr_timesheet_sheet/__openerp__.py @@ -29,22 +29,22 @@ This module helps you to easily encode and validate timesheet and attendances within the same view. =================================================================================================== -* It will mentain attendances and track (sign in/sign out) events. -* Track the timesheet lines. + * It will mentain attendances and track (sign in/sign out) events. + * Track the timesheet lines. Other tabs contains statistics views to help you analyse your time or the time of your team: -* Time spent by day (with attendances) -* Time spent by project + * Time spent by day (with attendances) + * Time spent by project This module also implements a complete timesheet validation process: -* Draft sheet -* Confirmation at the end of the period by the employee -* Validation by the project manager + * Draft sheet + * Confirmation at the end of the period by the employee + * Validation by the project manager The validation can be configured in the company: -* Period size (day, week, month, year) -* Maximal difference between timesheet and attendances + * Period size (day, week, month, year) + * Maximal difference between timesheet and attendances """, 'author': 'OpenERP SA', 'website': 'http://www.openerp.com', diff --git a/addons/mail/__openerp__.py b/addons/mail/__openerp__.py index e911f24e809..349a2e15b5a 100644 --- a/addons/mail/__openerp__.py +++ b/addons/mail/__openerp__.py @@ -28,6 +28,7 @@ A bussiness oriented Social Networking with a fully-integrated email and message management. ===================================================================== + The Social Networking module provides an unified social network abstraction layer allowing applications to display a complete communication history on documents.It gives the users the possibility @@ -38,7 +39,6 @@ allows to follow documents, and to be constantly updated about recent news. The main features of the module are : - * a clean and renewed communication history for any OpenERP document that can act as a discussion topic, * a discussion mean on documents, From aef3a442e608834493d228349c2e28e4b8c22ac4 Mon Sep 17 00:00:00 2001 From: "Purnendu Singh (OpenERP)" Date: Thu, 12 Jul 2012 14:33:22 +0530 Subject: [PATCH 169/349] [IMP] crm: remove sales team from calender view of meeting bzr revid: psi@tinyerp.com-20120712090322-pu6am3gmnw24wi5h --- addons/crm/crm_meeting_view.xml | 15 --------------- 1 file changed, 15 deletions(-) diff --git a/addons/crm/crm_meeting_view.xml b/addons/crm/crm_meeting_view.xml index f7c2ada05f2..74d23a99fd8 100644 --- a/addons/crm/crm_meeting_view.xml +++ b/addons/crm/crm_meeting_view.xml @@ -16,21 +16,6 @@ - - - - CRM - Meetings Calendar - crm.meeting - calendar - - - - - - - - - From 66b80419e091463034e6b2e8ae221d0278b87a42 Mon Sep 17 00:00:00 2001 From: "Ajay Chauhan (OpenERP)" Date: Thu, 12 Jul 2012 15:24:25 +0530 Subject: [PATCH 170/349] [IMP] : Update Description for modules bzr revid: cha@tinyerp.com-20120712095425-l1i8o33okp2tzfjx --- addons/account/__openerp__.py | 22 +++++----- .../account_analytic_default/__openerp__.py | 10 ++--- addons/account_anglo_saxon/__openerp__.py | 14 ++++--- .../__openerp__.py | 16 +++---- addons/account_budget/__openerp__.py | 4 +- addons/account_cancel/__openerp__.py | 3 +- addons/account_coda/__openerp__.py | 42 ++++++++++--------- addons/mail/__openerp__.py | 4 +- addons/point_of_sale/__openerp__.py | 2 +- addons/project/__openerp__.py | 2 +- 10 files changed, 62 insertions(+), 57 deletions(-) diff --git a/addons/account/__openerp__.py b/addons/account/__openerp__.py index d955dc2c242..9df9fa00e5a 100644 --- a/addons/account/__openerp__.py +++ b/addons/account/__openerp__.py @@ -29,20 +29,20 @@ Accounting and Financial Management. Financial and accounting module that covers: -------------------------------------------- -General accountings -Cost/Analytic accounting -Third party accounting -Taxes management -Budgets -Customer and Supplier Invoices -Bank statements -Reconciliation process by partner + * General accountings + * Cost/Analytic accounting + * Third party accounting + * Taxes management + * Budgets + * Customer and Supplier Invoices + * Bank statements + * Reconciliation process by partner Creates a dashboard for accountants that includes: -------------------------------------------------- -* List of Customer Invoice to Approve -* Company Analysis -* Graph of Treasury + * List of Customer Invoice to Approve + * Company Analysis + * Graph of Treasury The processes like maintaining of general ledger is done through the defined financial Journals (entry move line orgrouping is maintained through journal) for a particular financial year and for preparation of vouchers there is a module named account_voucher. diff --git a/addons/account_analytic_default/__openerp__.py b/addons/account_analytic_default/__openerp__.py index e02f477d1af..0a3ee7ff748 100644 --- a/addons/account_analytic_default/__openerp__.py +++ b/addons/account_analytic_default/__openerp__.py @@ -27,11 +27,11 @@ Allows to automatically select analytic accounts based on criterions: ===================================================================== -* Product -* Partner -* User -* Company -* Date + * Product + * Partner + * User + * Company + * Date """, 'author' : 'OpenERP SA', 'website' : 'http://www.openerp.com', diff --git a/addons/account_anglo_saxon/__openerp__.py b/addons/account_anglo_saxon/__openerp__.py index e6987ab6a0e..7a260b087f9 100644 --- a/addons/account_anglo_saxon/__openerp__.py +++ b/addons/account_anglo_saxon/__openerp__.py @@ -27,13 +27,15 @@ This module supports the Anglo-Saxon accounting methodology by changing the accounting logic with stock transactions. ===================================================================================================================== -The difference between the Anglo-Saxon accounting countries -and the Rhine or also called Continental accounting countries is the moment of taking the Cost of Goods Sold versus Cost of Sales. -Anglo-Saxons accounting does take the cost when sales invoice is created, Continental accounting will take the cost at the moment the goods are shipped. +The difference between the Anglo-Saxon accounting countries and the Rhine or also called +Continental accounting countries is the moment of taking the Cost of Goods Sold versus +Cost of Sales. Anglo-Saxons accounting does take the cost when sales invoice is created, +Continental accounting will take the cost at the moment the goods are shipped. -This module will add this functionality by using a interim account, to store the value of shipped goods and will contra book this interim account -when the invoice is created to transfer this amount to the debtor or creditor account. -Secondly, price differences between actual purchase price and fixed product standard price are booked on a separate account.""", +This module will add this functionality by using a interim account, to store the value of +shipped goods and will contra book this interim account when the invoice is created to +transfer this amount to the debtor or creditor account. Secondly, price differences between +actual purchase price and fixed product standard price are booked on a separate account.""", "images": ["images/account_anglo_saxon.jpeg"], "depends": ["product", "purchase"], "category": "Hidden/Dependency", diff --git a/addons/account_bank_statement_extensions/__openerp__.py b/addons/account_bank_statement_extensions/__openerp__.py index 2a31e3388a6..a3765d33622 100644 --- a/addons/account_bank_statement_extensions/__openerp__.py +++ b/addons/account_bank_statement_extensions/__openerp__.py @@ -29,14 +29,14 @@ Module that extends the standard account_bank_statement_line object for improved e-banking support. =================================================================================================== -Adds -- valuta date -- batch payments -- traceability of changes to bank statement lines -- bank statement line views -- bank statements balances report -- performance improvements for digital import of bank statement (via 'ebanking_import' context flag) -- name_search on res.partner.bank enhanced to allow search on bank and iban account numbers +This module adds: + - valuta date + - batch payments + - traceability of changes to bank statement lines + - bank statement line views + - bank statements balances report + - performance improvements for digital import of bank statement (via 'ebanking_import' context flag) + - name_search on res.partner.bank enhanced to allow search on bank and iban account numbers ''', 'depends': ['account'], 'demo_xml': [], diff --git a/addons/account_budget/__openerp__.py b/addons/account_budget/__openerp__.py index 9e61f7314a7..420991c18ee 100644 --- a/addons/account_budget/__openerp__.py +++ b/addons/account_budget/__openerp__.py @@ -28,8 +28,8 @@ This module allows accountants to manage analytic and crossovered budgets. ========================================================================== -Once the Budgets are defined (in Invoicing/Budgets/Budgets), -the Project Managers can set the planned amount on each Analytic Account. +Once the Budgets are defined (in Invoicing/Budgets/Budgets), the Project Managers +can set the planned amount on each Analytic Account. The accountant has the possibility to see the total of amount planned for each Budget in order to ensure the total planned is not greater/lower than what he planned diff --git a/addons/account_cancel/__openerp__.py b/addons/account_cancel/__openerp__.py index 83f3a24ca88..c616cc9d5e0 100644 --- a/addons/account_cancel/__openerp__.py +++ b/addons/account_cancel/__openerp__.py @@ -28,7 +28,8 @@ Allows cancelling accounting entries. ===================================== -This module adds 'Allow Cancelling Entries' field on form view of account journal. If set to true it allows user to cancel entries & invoices. +This module adds 'Allow Cancelling Entries' field on form view of account journal. +If set to true it allows user to cancel entries & invoices. """, 'website': 'http://www.openerp.com', "images" : ["images/account_cancel.jpeg"], diff --git a/addons/account_coda/__openerp__.py b/addons/account_coda/__openerp__.py index d6a44bbaba8..094ab45acc0 100644 --- a/addons/account_coda/__openerp__.py +++ b/addons/account_coda/__openerp__.py @@ -29,28 +29,29 @@ Module to import CODA bank statements. ====================================== Supported are CODA flat files in V2 format from Belgian bank accounts. -* CODA v1 support. -* CODA v2.2 support. -* Foreign Currency support. -* Support for all data record types (0, 1, 2, 3, 4, 8, 9). -* Parsing & logging of all Transaction Codes and Structured Format Communications. -* Automatic Financial Journal assignment via CODA configuration parameters. -* Support for multiple Journals per Bank Account Number. -* Support for multiple statements from different bank accounts in a single CODA file. -* Support for 'parsing only' CODA Bank Accounts (defined as type='info' in the CODA Bank Account configuration records). -* Multi-language CODA parsing, parsing configuration data provided for EN, NL, FR. + * CODA v1 support. + * CODA v2.2 support. + * Foreign Currency support. + * Support for all data record types (0, 1, 2, 3, 4, 8, 9). + * Parsing & logging of all Transaction Codes and Structured Format Communications. + * Automatic Financial Journal assignment via CODA configuration parameters. + * Support for multiple Journals per Bank Account Number. + * Support for multiple statements from different bank accounts in a single CODA file. + * Support for 'parsing only' CODA Bank Accounts (defined as type='info' in the CODA Bank Account configuration records). + * Multi-language CODA parsing, parsing configuration data provided for EN, NL, FR. -The machine readable CODA Files are parsed and stored in human readable format in CODA Bank Statements. -Also Bank Statements are generated containing a subset of the CODA information (only those transaction lines -that are required for the creation of the Financial Accounting records). -The CODA Bank Statement is a 'read-only' object, hence remaining a reliable representation of the original CODA file -whereas the Bank Statement will get modified as required by accounting business processes. +The machine readable CODA Files are parsed and stored in human readable format in +CODA Bank Statements. Also Bank Statements are generated containing a subset of +the CODA information (only those transaction lines that are required for the creation +of the Financial Accounting records). The CODA Bank Statement is a 'read-only' +object, hence remaining a reliable representation of the original CODA file whereas +the Bank Statement will get modified as required by accounting business processes. CODA Bank Accounts configured as type 'Info' will only generate CODA Bank Statements. -A removal of one object in the CODA processing results in the removal of the associated objects. -The removal of a CODA File containing multiple Bank Statements will also remove those associated -statements. +A removal of one object in the CODA processing results in the removal of the associated +objects. The removal of a CODA File containing multiple Bank Statements will also +remove those associated statements. The following reconciliation logic has been implemented in the CODA processing: @@ -59,8 +60,9 @@ The following reconciliation logic has been implemented in the CODA processing: 3) When the previous step doesn't find a match, the transaction counterparty is located via the Bank Account Number configured on the OpenERP Customer and Supplier records. 4) In case the previous steps are not successful, the transaction is generated by using the 'Default Account for Unrecognized Movement' field of the CODA File Import wizard in order to allow further manual processing. -In stead of a manual adjustment of the generated Bank Statements, you can also re-import the CODA -after updating the OpenERP database with the information that was missing to allow automatic reconciliation. +In stead of a manual adjustment of the generated Bank Statements, you can also +re-import the CODA after updating the OpenERP database with the information that +was missing to allow automatic reconciliation. Remark on CODA V1 support: In some cases a transaction code, transaction category or structured communication code has been given a new or clearer description in CODA V2. diff --git a/addons/mail/__openerp__.py b/addons/mail/__openerp__.py index 349a2e15b5a..6230e636296 100644 --- a/addons/mail/__openerp__.py +++ b/addons/mail/__openerp__.py @@ -31,14 +31,14 @@ and message management. The Social Networking module provides an unified social network abstraction layer allowing applications to display a complete -communication history on documents.It gives the users the possibility +communication history on documents. It gives the users the possibility to read and send messages and emails in an unified way. It also provides a feeds page combined to a subscription mechanism, that allows to follow documents, and to be constantly updated about recent news. -The main features of the module are : +The main features of the module are: * a clean and renewed communication history for any OpenERP document that can act as a discussion topic, * a discussion mean on documents, diff --git a/addons/point_of_sale/__openerp__.py b/addons/point_of_sale/__openerp__.py index ffe2b3cebe7..80933eaa785 100644 --- a/addons/point_of_sale/__openerp__.py +++ b/addons/point_of_sale/__openerp__.py @@ -29,7 +29,7 @@ This module provides a quick and easy sale process. =================================================== -Main features : +Main features: --------------- * Fast encoding of the sale. * Allow to choose one payment mode (the quick way) or to split the payment between several payment mode. diff --git a/addons/project/__openerp__.py b/addons/project/__openerp__.py index b109867f3d8..512ecfb6845 100644 --- a/addons/project/__openerp__.py +++ b/addons/project/__openerp__.py @@ -36,7 +36,7 @@ Project Management module tracks multi-level projects, tasks, work done on tasks It is able to render planning, order tasks. Dashboard for project management that includes: --------------------------------------------- +----------------------------------------------- * List of My Open Tasks * Graph of My Remaining Hours by Project """, From 1b4b0df313888d596e1afc16809c9dff78abf367 Mon Sep 17 00:00:00 2001 From: "Ajay Chauhan (OpenERP)" Date: Thu, 12 Jul 2012 15:57:15 +0530 Subject: [PATCH 171/349] [IMP] : Update Description for modules bzr revid: cha@tinyerp.com-20120712102715-wynxquf3zpidgmoz --- addons/account_followup/__openerp__.py | 12 +++++++----- addons/account_payment/__openerp__.py | 4 ++-- addons/analytic_user_function/__openerp__.py | 6 ++++-- addons/association/__openerp__.py | 3 ++- addons/audittrail/__openerp__.py | 4 ++-- 5 files changed, 17 insertions(+), 12 deletions(-) diff --git a/addons/account_followup/__openerp__.py b/addons/account_followup/__openerp__.py index bdc4b12bb3e..f82741c15ad 100644 --- a/addons/account_followup/__openerp__.py +++ b/addons/account_followup/__openerp__.py @@ -30,14 +30,16 @@ Module to automate letters for unpaid invoices, with multi-level recalls. You can define your multiple levels of recall through the menu: Invoicing/Configuration/Miscellaneous/Follow-ups -Once it is defined, you can automatically print recalls every day through simply clicking on the menu: +Once it is defined, you can automatically print recalls every day through simply +clicking on the menu: Invoicing/Periodical Processing/Billing/Send follow-ups -It will generate a PDF with all the letters according to the the -different levels of recall defined. You can define different policies -for different companies. You can also send mail to the customer. +It will generate a PDF with all the letters according to the the different levels +of recall defined. You can define different policies for different companies. You +can also send mail to the customer. -Note that if you want to check the follow-up level for a given partner/account entry, you can do from in the menu: +Note that if you want to check the follow-up level for a given partner/account +entry, you can do from in the menu: Invoicing/Reporting/Generic Reporting/Partners/Follow-ups Sent """, diff --git a/addons/account_payment/__openerp__.py b/addons/account_payment/__openerp__.py index 1959d71da74..9e7209a348e 100644 --- a/addons/account_payment/__openerp__.py +++ b/addons/account_payment/__openerp__.py @@ -29,8 +29,8 @@ Module to manage the payment of your supplier invoices. ======================================================= This module allows you to create and manage your payment orders, with purposes to -* serve as base for an easy plug-in of various automated payment mechanisms. -* provide a more efficient way to manage invoice payment. + * serve as base for an easy plug-in of various automated payment mechanisms. + * provide a more efficient way to manage invoice payment. Warning: -------- diff --git a/addons/analytic_user_function/__openerp__.py b/addons/analytic_user_function/__openerp__.py index c2dcc3cc91b..33a6a543874 100644 --- a/addons/analytic_user_function/__openerp__.py +++ b/addons/analytic_user_function/__openerp__.py @@ -28,9 +28,11 @@ This module allows you to define what is the default function of a specific user on a given account. ==================================================================================================== -This is mostly used when a user encodes his timesheet: the values are retrieved and the fields are auto-filled. But the possibility to change these values is still available. +This is mostly used when a user encodes his timesheet: the values are retrieved and +the fields are auto-filled. But the possibility to change these values is still available. -Obviously if no data has been recorded for the current account, the default value is given as usual by the employee data so that this module is perfectly compatible with older configurations. +Obviously if no data has been recorded for the current account, the default value is given +as usual by the employee data so that this module is perfectly compatible with older configurations. """, 'author': 'OpenERP SA', diff --git a/addons/association/__openerp__.py b/addons/association/__openerp__.py index a3ad6a34c6d..2b7fcab8b12 100644 --- a/addons/association/__openerp__.py +++ b/addons/association/__openerp__.py @@ -28,7 +28,8 @@ This module is to configure modules related to an association. ============================================================== -It installs the profile for associations to manage events, registrations, memberships, membership products (schemes). +It installs the profile for associations to manage events, registrations, memberships, +membership products (schemes). """, 'author': 'OpenERP SA', 'depends': ['base_setup', 'membership', 'event'], diff --git a/addons/audittrail/__openerp__.py b/addons/audittrail/__openerp__.py index 94061548a89..9ba403bcee3 100644 --- a/addons/audittrail/__openerp__.py +++ b/addons/audittrail/__openerp__.py @@ -28,8 +28,8 @@ This module lets administrator track every user operation on all the objects of the system. =========================================================================================== -The administrator can subscribe to rules for read, write and -delete on objects and can check logs. +The administrator can subscribe to rules for read, write and delete on objects +and can check logs. """, 'author': 'OpenERP SA', 'website': 'http://www.openerp.com', From 1cd28c42bc3505117c6c59187599120661eff044 Mon Sep 17 00:00:00 2001 From: "Ajay Chauhan (OpenERP)" Date: Thu, 12 Jul 2012 16:15:02 +0530 Subject: [PATCH 172/349] [IMP] : Update Description for modules bzr revid: cha@tinyerp.com-20120712104502-o1prt23y0azyksix --- addons/base_crypt/__openerp__.py | 14 ++++++-------- addons/base_iban/__openerp__.py | 3 ++- addons/base_module_record/__openerp__.py | 9 ++++----- addons/base_report_designer/__openerp__.py | 5 ++--- addons/crm_caldav/__openerp__.py | 2 +- 5 files changed, 15 insertions(+), 18 deletions(-) diff --git a/addons/base_crypt/__openerp__.py b/addons/base_crypt/__openerp__.py index efb2c662f04..3163f78ae7d 100644 --- a/addons/base_crypt/__openerp__.py +++ b/addons/base_crypt/__openerp__.py @@ -29,16 +29,14 @@ Replaces cleartext passwords in the database with a secure hash. ================================================================ -For your existing user base, the removal of the cleartext -passwords occurs immediately when you instal base_crypt. +For your existing user base, the removal of the cleartext passwords occurs +immediately when you instal base_crypt. -All passwords will be replaced by a secure, salted, cryptographic -hash, preventing anyone from reading the original password in -the database. +All passwords will be replaced by a secure, salted, cryptographic hash, +preventing anyone from reading the original password in the database. -After installing this module it won't be possible to recover a -forgotten password for your users, the only solution is for an -admin to set a new password. +After installing this module it won't be possible to recover a forgotten password +for your users, the only solution is for an admin to set a new password. Security Warning ++++++++++++++++ diff --git a/addons/base_iban/__openerp__.py b/addons/base_iban/__openerp__.py index d31f2f4ade5..cb0d89e6efe 100644 --- a/addons/base_iban/__openerp__.py +++ b/addons/base_iban/__openerp__.py @@ -26,7 +26,8 @@ This module installs the base for IBAN (International Bank Account Number) bank accounts and checks for its validity. ===================================================================================================================== -The ability to extract the correctly represented local accounts from IBAN accounts with a single statement. +The ability to extract the correctly represented local accounts from IBAN accounts +with a single statement. """, 'author': 'OpenERP SA', 'website': 'http://www.openerp.com', diff --git a/addons/base_module_record/__openerp__.py b/addons/base_module_record/__openerp__.py index 4d4168160c0..0cbc3e02f90 100644 --- a/addons/base_module_record/__openerp__.py +++ b/addons/base_module_record/__openerp__.py @@ -28,16 +28,15 @@ This module allows you to create a new module without any development. ====================================================================== -It records all operations on objects during the recording session and -produce a .ZIP module. So you can create your own module directly from -the OpenERP client. +It records all operations on objects during the recording session and produce a +.ZIP module. So you can create your own module directly from the OpenERP client. This version works for creating and updating existing records. It recomputes dependencies and links for all types of widgets (many2one, many2many, ...). It also support workflows and demo/update data. -This should help you to easily create reusable and publishable modules -for custom configurations and demo/testing data. +This should help you to easily create reusable and publishable modules for custom +configurations and demo/testing data. How to use it: Run Settings/Technical/Module Creation/Export Customizations As a Module wizard. diff --git a/addons/base_report_designer/__openerp__.py b/addons/base_report_designer/__openerp__.py index 3b46389184d..078916b9439 100644 --- a/addons/base_report_designer/__openerp__.py +++ b/addons/base_report_designer/__openerp__.py @@ -28,9 +28,8 @@ This module is used along with OpenERP OpenOffice Plugin. ========================================================= -This module adds wizards to Import/Export .sxw report that -you can modify in OpenOffice. Once you have modified it you can -upload the report using the same wizard. +This module adds wizards to Import/Export .sxw report that you can modify in OpenOffice. +Once you have modified it you can upload the report using the same wizard. """, 'author': 'OpenERP SA', 'website': 'http://www.openerp.com', diff --git a/addons/crm_caldav/__openerp__.py b/addons/crm_caldav/__openerp__.py index ce3193a595d..6e4c108e5dd 100644 --- a/addons/crm_caldav/__openerp__.py +++ b/addons/crm_caldav/__openerp__.py @@ -29,7 +29,7 @@ Caldav features in Meeting. =========================== - * Share meeting with other calendar clients like sunbird + * Share meeting with other calendar clients like sunbird """, 'author': 'OpenERP SA', 'website': 'http://www.openerp.com', From 9b52110d4b9d644d452609d96aa73f5e91f99296 Mon Sep 17 00:00:00 2001 From: "Jiten (OpenERP)" Date: Thu, 12 Jul 2012 16:19:25 +0530 Subject: [PATCH 173/349] [IMP] Improved bounce effect when kanban group column is folded. bzr revid: jra@tinyerp.com-20120712104925-3ouxmwk780x3pkra --- addons/web_kanban/static/src/js/kanban.js | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/addons/web_kanban/static/src/js/kanban.js b/addons/web_kanban/static/src/js/kanban.js index 903b4d32840..05505b26e53 100644 --- a/addons/web_kanban/static/src/js/kanban.js +++ b/addons/web_kanban/static/src/js/kanban.js @@ -416,12 +416,18 @@ instance.web_kanban.KanbanGroup = instance.web.OldWidget.extend({ self.quick.focus(); }); var add_btn = this.$element.find('.oe_kanban_add'); + var fold_btn = this.$element.find('.oe_dropdown_kanban'); this.$records.click(function (ev) { if (ev.target == ev.currentTarget) { if (jQuery(window).scrollTop() > 120 ) { $('body,html').animate({ scrollTop: 0 }, 200); } - self.view.do_bounce(add_btn); + if (!self.state.folded) { + self.view.do_bounce(add_btn); + }else { + fold_btn.css('display','inline-block'); + self.view.do_bounce(fold_btn); + } } }); this.$records.find('.oe_kanban_show_more').click(this.do_show_more); From e2ebb07bd05be4e08db81124cfcabc7fb743ded2 Mon Sep 17 00:00:00 2001 From: "Ajay Chauhan (OpenERP)" Date: Thu, 12 Jul 2012 16:31:12 +0530 Subject: [PATCH 174/349] [IMP] : Update Description for modules bzr revid: cha@tinyerp.com-20120712110112-sv55u52q6f7s8k8m --- addons/crm_profiling/__openerp__.py | 10 +++++++--- addons/delivery/__openerp__.py | 4 ++-- addons/document/__openerp__.py | 4 ++-- addons/document_webdav/__openerp__.py | 3 ++- addons/edi/__openerp__.py | 13 ++++++------- 5 files changed, 19 insertions(+), 15 deletions(-) diff --git a/addons/crm_profiling/__openerp__.py b/addons/crm_profiling/__openerp__.py index 52fcf1173ed..68594281b9b 100644 --- a/addons/crm_profiling/__openerp__.py +++ b/addons/crm_profiling/__openerp__.py @@ -28,11 +28,15 @@ This module allows users to perform segmentation within partners. ================================================================= -It uses the profiles criteria from the earlier segmentation module and improve it. Thanks to the new concept of questionnaire. You can now regroup questions into a questionnaire and directly use it on a partner. +It uses the profiles criteria from the earlier segmentation module and improve it. +Thanks to the new concept of questionnaire. You can now regroup questions into a +questionnaire and directly use it on a partner. -It also has been merged with the earlier CRM & SRM segmentation tool because they were overlapping. +It also has been merged with the earlier CRM & SRM segmentation tool because they +were overlapping. - * Note: this module is not compatible with the module segmentation, since it's the same which has been renamed. + * Note: this module is not compatible with the module segmentation, since + it's the same which has been renamed. """, 'author': 'OpenERP SA', 'website': 'http://www.openerp.com', diff --git a/addons/delivery/__openerp__.py b/addons/delivery/__openerp__.py index cd8d2520db6..d0c25835371 100644 --- a/addons/delivery/__openerp__.py +++ b/addons/delivery/__openerp__.py @@ -28,8 +28,8 @@ Allows you to add delivery methods in sale orders and picking. ============================================================== -You can define your own carrier and delivery grids for prices. -When creating invoices from picking, OpenERP is able to add and compute the shipping line. +You can define your own carrier and delivery grids for prices. When creating +invoices from picking, OpenERP is able to add and compute the shipping line. """, 'author': 'OpenERP SA', diff --git a/addons/document/__openerp__.py b/addons/document/__openerp__.py index d8e42703efc..388a92e3abf 100644 --- a/addons/document/__openerp__.py +++ b/addons/document/__openerp__.py @@ -37,8 +37,8 @@ This is a complete document management system. * Files Size by Month (graph) ATTENTION: - - When you install this module in a running company that have already PDF files stored into the database, - you will lose them all. + - When you install this module in a running company that have already PDF + files stored into the database, you will lose them all. - After installing this module PDF's are no longer stored into the database, but in the servers rootpad like /server/bin/filestore. """, diff --git a/addons/document_webdav/__openerp__.py b/addons/document_webdav/__openerp__.py index ec50d9301dc..f694e588058 100644 --- a/addons/document_webdav/__openerp__.py +++ b/addons/document_webdav/__openerp__.py @@ -40,7 +40,8 @@ With this module, the WebDAV server for documents is activated. You can then use any compatible browser to remotely see the attachments of OpenObject. -After installation, the WebDAV server can be controlled by a [webdav] section in the server's config. +After installation, the WebDAV server can be controlled by a [webdav] section in +the server's config. Server Configuration Parameter: [webdav] diff --git a/addons/edi/__openerp__.py b/addons/edi/__openerp__.py index 580b838d155..3084d22685c 100644 --- a/addons/edi/__openerp__.py +++ b/addons/edi/__openerp__.py @@ -23,15 +23,14 @@ 'version': '1.0', 'category': 'Tools', 'description': """ -Provides a common EDI platform that other Applications can use -============================================================== +Provides a common EDI platform that other Applications can use. +=============================================================== -OpenERP specifies a generic EDI format for exchanging business -documents between different systems, and provides generic -mechanisms to import and export them. +OpenERP specifies a generic EDI format for exchanging business documents between +different systems, and provides generic mechanisms to import and export them. -More details about OpenERP's EDI format may be found in the -technical OpenERP documentation at http://doc.openerp.com +More details about OpenERP's EDI format may be found in the technical OpenERP +documentation at http://doc.openerp.com """, 'author': 'OpenERP SA', 'website': 'http://www.openerp.com', From 3e94213845b7713b4e61e71922a0b0feeb51fc4f Mon Sep 17 00:00:00 2001 From: "Ajay Chauhan (OpenERP)" Date: Thu, 12 Jul 2012 17:15:35 +0530 Subject: [PATCH 175/349] [IMP] : Update Description for modules bzr revid: cha@tinyerp.com-20120712114535-4a6ge109hskz0gcq --- addons/email_template/__openerp__.py | 4 +-- addons/event/__openerp__.py | 3 +- addons/event_moodle/__openerp__.py | 22 +++++++------- addons/event_sale/__openerp__.py | 9 ++++-- addons/fetchmail/__openerp__.py | 44 +++++++++++++--------------- 5 files changed, 42 insertions(+), 40 deletions(-) diff --git a/addons/email_template/__openerp__.py b/addons/email_template/__openerp__.py index a8303247ec0..b69dd2bb65c 100644 --- a/addons/email_template/__openerp__.py +++ b/addons/email_template/__openerp__.py @@ -28,8 +28,8 @@ "category" : "Marketing", "depends" : ['mail'], "description": """ -Email Templating (simplified version of the original Power Email by Openlabs) -============================================================================= +Email Templating (simplified version of the original Power Email by Openlabs). +============================================================================== Lets you design complete email templates related to any OpenERP document (Sale Orders, Invoices and so on), including sender, recipient, subject, body (HTML and diff --git a/addons/event/__openerp__.py b/addons/event/__openerp__.py index 0da2615d3a2..ea772778835 100644 --- a/addons/event/__openerp__.py +++ b/addons/event/__openerp__.py @@ -31,7 +31,8 @@ Organization and management of Events. This module allows you * to manage your events and their registrations - * to use emails to automatically confirm and send acknowledgements for any registration to an event + * to use emails to automatically confirm and send acknowledgements for any + registration to an event Note that: - You can define new types of events in diff --git a/addons/event_moodle/__openerp__.py b/addons/event_moodle/__openerp__.py index 954ce7d5bc6..a1e61377ce1 100644 --- a/addons/event_moodle/__openerp__.py +++ b/addons/event_moodle/__openerp__.py @@ -29,30 +29,28 @@ Configure your moodle server. ============================= With this module you are able to connect your OpenERP with a moodle plateform. -This module will create courses and students automatically in your moodle plateform to avoid wasting time. +This module will create courses and students automatically in your moodle plateform +to avoid wasting time. Now you have a simple way to create training or courses with OpenERP and moodle - STEPS TO CONFIGURE ------------------ -1. activate web service in moodle +1. activate web service in moodle. ---------------------------------- ->site administration >plugins >web sevices >manage protocols -activate the xmlrpc web service +>site administration >plugins >web sevices >manage protocols activate the xmlrpc web service ->site administration >plugins >web sevices >manage tokens -create a token +>site administration >plugins >web sevices >manage tokens create a token ->site administration >plugins >web sevices >overview -activate webservice +>site administration >plugins >web sevices >overview activate webservice -2. Create confirmation email with login and password ----------------------------------------------------- -we strongly suggest you to add those following lines at the bottom of your event confirmation email to communicate the login/password of moodle to your subscribers. +2. Create confirmation email with login and password. +----------------------------------------------------- +we strongly suggest you to add those following lines at the bottom of your event +confirmation email to communicate the login/password of moodle to your subscribers. ........your configuration text....... diff --git a/addons/event_sale/__openerp__.py b/addons/event_sale/__openerp__.py index d06e964c483..ddbb8fec22a 100644 --- a/addons/event_sale/__openerp__.py +++ b/addons/event_sale/__openerp__.py @@ -28,9 +28,14 @@ Creating registration with sale orders. ======================================= -This module allows you to automatize and connect your registration creation with your main sale flow and, therefore, to enable the invoicing feature of registrations. +This module allows you to automatize and connect your registration creation with +your main sale flow and, therefore, to enable the invoicing feature of registrations. -It defines a new kind of service products that offers you the possibility to choose an event category associated with it. When you encode a sale order for that product, you will be able to choose an existing event of that category and when you confirm your sale order it will automatically create a registration for this event. +It defines a new kind of service products that offers you the possibility to +choose an event category associated with it. When you encode a sale order for +that product, you will be able to choose an existing event of that category and +when you confirm your sale order it will automatically create a registration for +this event. """, 'author': 'OpenERP SA', 'depends': ['event','sale','sale_crm'], diff --git a/addons/fetchmail/__openerp__.py b/addons/fetchmail/__openerp__.py index 8c720045197..c5e2a232c34 100644 --- a/addons/fetchmail/__openerp__.py +++ b/addons/fetchmail/__openerp__.py @@ -27,35 +27,33 @@ "author" : "OpenERP SA", "category": 'Tools', "description": """ -Retrieve incoming email on POP / IMAP servers. -============================================== +Retrieve incoming email on POP/IMAP servers. +============================================ -Enter the parameters of your POP/IMAP account(s), and any incoming -emails on these accounts will be automatically downloaded into your OpenERP -system. All POP3/IMAP-compatible servers are supported, included those -that require an encrypted SSL/TLS connection. +Enter the parameters of your POP/IMAP account(s), and any incoming emails on +these accounts will be automatically downloaded into your OpenERP system. All +POP3/IMAP-compatible servers are supported, included those that require an +encrypted SSL/TLS connection. -This can be used to easily create email-based workflows for many -email-enabled OpenERP documents, such as: +This can be used to easily create email-based workflows for many email-enabled +OpenERP documents, such as: - * CRM Leads/Opportunities - * CRM Claims - * Project Issues - * Project Tasks - * Human Resource Recruitments (Applicants) + * CRM Leads/Opportunities + * CRM Claims + * Project Issues + * Project Tasks + * Human Resource Recruitments (Applicants) -Just install the relevant application, and you can assign any of -these document types (Leads, Project Issues.) to your incoming -email accounts. New emails will automatically spawn new documents -of the chosen type, so it's a snap to create a mailbox-to-OpenERP -integration. Even better: these documents directly act as mini -conversations synchronized by email. You can reply from within -OpenERP, and the answers will automatically be collected when -they come back, and attached to the same *conversation* document. +Just install the relevant application, and you can assign any of these document +types (Leads, Project Issues.) to your incoming email accounts. New emails will +automatically spawn new documents of the chosen type, so it's a snap to create a +mailbox-to-OpenERP integration. Even better: these documents directly act as mini +conversations synchronized by email. You can reply from within OpenERP, and the +answers will automatically be collected when they come back, and attached to the +same *conversation* document. For more specific needs, you may also assign custom-defined actions -(technically: Server Actions) to be triggered for each incoming -mail. +(technically: Server Actions) to be triggered for each incoming mail. """, 'website': 'http://www.openerp.com', 'init_xml': [], From 0bccd9be59b3cf258a9a2eea08c01a00992a0564 Mon Sep 17 00:00:00 2001 From: Xavier Morel Date: Thu, 12 Jul 2012 13:55:52 +0200 Subject: [PATCH 176/349] [FIX] tests: update jquery link, fix broken searchview test following merge bzr revid: xmo@openerp.com-20120712115552-7adsu941o3wjtrmr --- addons/web/static/src/js/search.js | 1 + addons/web/static/test/search.js | 12 +++--------- addons/web/static/test/test.html | 2 +- 3 files changed, 5 insertions(+), 10 deletions(-) diff --git a/addons/web/static/src/js/search.js b/addons/web/static/src/js/search.js index c8b6f797dba..504510ef133 100644 --- a/addons/web/static/src/js/search.js +++ b/addons/web/static/src/js/search.js @@ -1669,6 +1669,7 @@ instance.web.search.AddToDashboard = instance.web.Widget.extend({ return $.when(this.load_data(),this.data_loaded).pipe(this.proxy("render_data")); }, load_data:function(){ + if (!instance.webclient) { return $.Deferred().reject(); } var self = this,dashboard_menu = instance.webclient.menu.data.data.children; var ir_model_data = new instance.web.Model('ir.model.data',{},[['name','=','menu_reporting_dashboard']]).query(['res_id']); var map_data = function(result){ diff --git a/addons/web/static/test/search.js b/addons/web/static/test/search.js index 0b1ef7fa2b6..548eef612b5 100644 --- a/addons/web/static/test/search.js +++ b/addons/web/static/test/search.js @@ -1061,17 +1061,11 @@ $(document).ready(function () { module('saved_filters', { setup: function () { - instance = window.openerp.init([]); - window.openerp.web.corelib(instance); - window.openerp.web.coresetup(instance); - window.openerp.web.chrome(instance); - window.openerp.web.data(instance); - window.openerp.web.formats(instance); - window.openerp.web.search(instance); + instance = openerp.testing.instanceFor('search'); - instance.web.qweb.add_template(doc); + openerp.testing.loadTemplate(instance); - mockifyRPC(instance.connection); + openerp.testing.mockifyRPC(instance); } }); asyncTest('checkboxing', 6, function () { diff --git a/addons/web/static/test/test.html b/addons/web/static/test/test.html index 520a7106b5b..cab1586f240 100644 --- a/addons/web/static/test/test.html +++ b/addons/web/static/test/test.html @@ -13,7 +13,7 @@ - + From 0c872cf4694c25df89c9f6b24e32a08d475b393f Mon Sep 17 00:00:00 2001 From: Xavier Morel Date: Thu, 12 Jul 2012 14:06:57 +0200 Subject: [PATCH 177/349] [FIX] trailing comma in array literal creates a single undefined element in IE8 bzr revid: xmo@openerp.com-20120712120657-14j2izo6idppq5aq --- addons/web/static/test/list-utils.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/addons/web/static/test/list-utils.js b/addons/web/static/test/list-utils.js index baec728528e..6200ba788ce 100644 --- a/addons/web/static/test/list-utils.js +++ b/addons/web/static/test/list-utils.js @@ -266,7 +266,7 @@ $(document).ready(function () { {id: 2, value: 2}, {id: 3, value: 3}, {id: 4, value: 5}, - {id: 5, value: 8}, + {id: 5, value: 8} ]); deepEqual(root.succ(root.at(2)).attributes, @@ -304,7 +304,7 @@ $(document).ready(function () { {id: 2, value: 2}, {id: 3, value: 3}, {id: 4, value: 5}, - {id: 5, value: 8}, + {id: 5, value: 8} ]); deepEqual(root.pred(root.at(2)).attributes, From f72bbd07dce0c4f0cab4385a5baba432aada859a Mon Sep 17 00:00:00 2001 From: "Purnendu Singh (OpenERP)" Date: Thu, 12 Jul 2012 17:54:17 +0530 Subject: [PATCH 178/349] [IMP] crm: Improve the demo data in order to reflect meeting time in calender view bzr revid: psi@tinyerp.com-20120712122417-9uwvt5g32t9ssd9h --- addons/crm/crm_meeting_demo.xml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/addons/crm/crm_meeting_demo.xml b/addons/crm/crm_meeting_demo.xml index 3f209aeecd9..b4710fffb2f 100644 --- a/addons/crm/crm_meeting_demo.xml +++ b/addons/crm/crm_meeting_demo.xml @@ -27,10 +27,10 @@ - + - + @@ -42,10 +42,10 @@ - + - + From dc336de847e161f349668fca68d160c14d347ee3 Mon Sep 17 00:00:00 2001 From: "Ajay Chauhan (OpenERP)" Date: Thu, 12 Jul 2012 18:21:14 +0530 Subject: [PATCH 179/349] [IMP] : Update Description for modules bzr revid: cha@tinyerp.com-20120712125114-pa2sf1scg4s17qjl --- addons/hr_evaluation/__openerp__.py | 11 +++++------ addons/hr_timesheet/__openerp__.py | 4 ++-- addons/import_base/__openerp__.py | 4 ++-- addons/import_sugarcrm/__openerp__.py | 5 +++-- addons/l10n_at/__openerp__.py | 5 ++++- 5 files changed, 16 insertions(+), 13 deletions(-) diff --git a/addons/hr_evaluation/__openerp__.py b/addons/hr_evaluation/__openerp__.py index d2ca0df9738..25fe43a755c 100644 --- a/addons/hr_evaluation/__openerp__.py +++ b/addons/hr_evaluation/__openerp__.py @@ -31,12 +31,11 @@ Ability to create employees evaluation. ======================================= -An evaluation can be created by employee for subordinates, -juniors as well as his manager. The evaluation is done under a plan -in which various surveys can be created and it can be defined which -level of employee hierarchy fills what and final review and evaluation -is done by the manager. Every evaluation filled by the employees can be viewed -in the form of pdf file. +An evaluation can be created by employee for subordinates, juniors as well as +his manager. The evaluation is done under a plan in which various surveys can be +created and it can be defined which level of employee hierarchy fills what and +final review and evaluation is done by the manager. Every evaluation filled by +the employees can be viewed in the form of pdf file. """, "demo": ["hr_evaluation_demo.xml"], "data": [ diff --git a/addons/hr_timesheet/__openerp__.py b/addons/hr_timesheet/__openerp__.py index 6b8e618116e..d6a6232d1a0 100644 --- a/addons/hr_timesheet/__openerp__.py +++ b/addons/hr_timesheet/__openerp__.py @@ -34,8 +34,8 @@ the analytic account. Lots of reporting on time and employee tracking are provided. -It is completely integrated with the cost accounting module. It allows you -to set up a management by affair. +It is completely integrated with the cost accounting module. It allows you to set +up a management by affair. """, 'author': 'OpenERP SA', 'website': 'http://www.openerp.com', diff --git a/addons/import_base/__openerp__.py b/addons/import_base/__openerp__.py index 847ed89f1ec..294f864a0e3 100644 --- a/addons/import_base/__openerp__.py +++ b/addons/import_base/__openerp__.py @@ -24,8 +24,8 @@ 'version': '0.9', 'category': 'Hidden/Dependency', 'description': """ - This module provide a class import_framework to help importing - complex data from other software +This module provide a class import_framework to help importing complex data from +other software. """, 'author': 'OpenERP SA', 'website': 'http://www.openerp.com', diff --git a/addons/import_sugarcrm/__openerp__.py b/addons/import_sugarcrm/__openerp__.py index ea23247761d..f84b096e28a 100644 --- a/addons/import_sugarcrm/__openerp__.py +++ b/addons/import_sugarcrm/__openerp__.py @@ -23,8 +23,9 @@ 'name': 'SugarCRM Import', 'version': '1.0', 'category': 'Customer Relationship Management', - 'description': """This Module Import SugarCRM "Leads", "Opportunities", "Users", "Accounts", - "Contacts", "Employees", Meetings, Phonecalls, Emails, and Project, Project Tasks Data into OpenERP Module.""", + 'description': """ +This Module Import SugarCRM Leads, Opportunities, Users, Accounts, Contacts, Employees, +Meetings, Phonecalls, Emails, Project and Project Tasks Data into OpenERP Module.""", 'author': 'OpenERP SA', 'website': 'http://www.openerp.com', 'depends': ['import_base','crm', 'document'], diff --git a/addons/l10n_at/__openerp__.py b/addons/l10n_at/__openerp__.py index 0f70ec5ddbd..fc266e40d51 100644 --- a/addons/l10n_at/__openerp__.py +++ b/addons/l10n_at/__openerp__.py @@ -26,7 +26,10 @@ "website" : "http://www.conexus.at", "category" : "Localization/Account Charts", "depends" : ["account_chart", 'base_vat'], - "description": "This module provides the standard Accounting Chart for Austria which is based on the Template from BMF.gv.at. Please keep in mind that you should review and adapt it with your Accountant, before using it in a live Environment.", + "description": """ +This module provides the standard Accounting Chart for Austria which is based on +the Template from BMF.gv.at. Please keep in mind that you should review and adapt +it with your Accountant, before using it in a live Environment.""", "demo_xml" : [], "update_xml" : ['account_tax_code.xml',"account_chart.xml",'account_tax.xml',"l10n_chart_at_wizard.xml"], "auto_install": False, From 476970cc2e6eb70a1506a7a3b0910ef7f976f293 Mon Sep 17 00:00:00 2001 From: "Ajay Chauhan (OpenERP)" Date: Fri, 13 Jul 2012 10:41:29 +0530 Subject: [PATCH 180/349] [IMP] : Update Description for modules bzr revid: cha@tinyerp.com-20120713051129-2590w2op0bx2znj7 --- addons/l10n_be/__openerp__.py | 20 ++++++++++++------- addons/l10n_be_hr_payroll/__openerp__.py | 8 ++++---- .../l10n_be_hr_payroll_account/__openerp__.py | 2 +- addons/l10n_be_invoice_bba/__openerp__.py | 9 ++++++--- addons/l10n_br/__openerp__.py | 18 +++++++++++++++-- 5 files changed, 40 insertions(+), 17 deletions(-) diff --git a/addons/l10n_be/__openerp__.py b/addons/l10n_be/__openerp__.py index d8bf8fb88a2..1f4bcfe6284 100644 --- a/addons/l10n_be/__openerp__.py +++ b/addons/l10n_be/__openerp__.py @@ -27,17 +27,23 @@ This is the base module to manage the accounting chart for Belgium in OpenERP. After installing this module, the Configuration wizard for accounting is launched. * We have the account templates which can be helpful to generate Charts of Accounts. - * On that particular wizard, you will be asked to pass the name of the company, the chart template to follow, the no. of digits to generate, the code for your account and bank account, currency to create journals. + * On that particular wizard, you will be asked to pass the name of the company, + the chart template to follow, the no. of digits to generate, the code for your + account and bank account, currency to create journals. Thus, the pure copy of Chart Template is generated. Wizards provided by this module: - * Partner VAT Intra: Enlist the partners with their related VAT and invoiced amounts.Prepares an XML file format. - Path to access : Accounting/Reporting//Legal Statements/Belgium Statements/Partner VAT Listing - * Periodical VAT Declaration: Prepares an XML file for Vat Declaration of the Main company of the User currently Logged in. - Path to access : Accounting/Reporting/Legal Statements/Belgium Statements/Periodical VAT Declaration - * Annual Listing Of VAT-Subjected Customers: Prepares an XML file for Vat Declaration of the Main company of the User currently Logged in.Based on Fiscal year - Path to access : Accounting/Reporting/Legal Statements/Belgium Statements/Annual Listing Of VAT-Subjected Customers + * Partner VAT Intra: Enlist the partners with their related VAT and invoiced + amounts. Prepares an XML file format. + Path to access : Invoicing/Reporting/Legal Reports/Belgium Statements/Partner VAT Intra + * Periodical VAT Declaration: Prepares an XML file for Vat Declaration of + the Main company of the User currently Logged in. + Path to access : Invoicing/Reporting/Legal Reports/Belgium Statements/Periodical VAT Declaration + * Annual Listing Of VAT-Subjected Customers: Prepares an XML file for Vat + Declaration of the Main company of the User currently Logged in Based on + Fiscal year. + Path to access : Invoicing/Reporting/Legal Reports/Belgium Statements/Annual Listing Of VAT-Subjected Customers """, 'author': 'Noviat & OpenERP SA', diff --git a/addons/l10n_be_hr_payroll/__openerp__.py b/addons/l10n_be_hr_payroll/__openerp__.py index 9b6cd025b3f..e0d7ada059b 100644 --- a/addons/l10n_be_hr_payroll/__openerp__.py +++ b/addons/l10n_be_hr_payroll/__openerp__.py @@ -25,14 +25,14 @@ 'depends': ['hr_payroll'], 'version': '1.0', 'description': """ -Belgian Payroll Rules -===================== +Belgian Payroll Rules. +====================== * Employee Details * Employee Contracts * Passport based Contract - * Allowances / Deductions - * Allow to configure Basic / Gross / Net Salary + * Allowances/Deductions + * Allow to configure Basic/Gross/Net Salary * Employee Payslip * Monthly Payroll Register * Integrated with Holiday Management diff --git a/addons/l10n_be_hr_payroll_account/__openerp__.py b/addons/l10n_be_hr_payroll_account/__openerp__.py index ce6730df3da..81c7e243b39 100644 --- a/addons/l10n_be_hr_payroll_account/__openerp__.py +++ b/addons/l10n_be_hr_payroll_account/__openerp__.py @@ -25,7 +25,7 @@ 'depends': ['l10n_be_hr_payroll', 'hr_payroll_account', 'l10n_be'], 'version': '1.0', 'description': """ -Accounting Data for Belgian Payroll Rules +Accounting Data for Belgian Payroll Rules. """, 'auto_install': True, diff --git a/addons/l10n_be_invoice_bba/__openerp__.py b/addons/l10n_be_invoice_bba/__openerp__.py index 9cdc97d0c71..9f4efe1b31e 100644 --- a/addons/l10n_be_invoice_bba/__openerp__.py +++ b/addons/l10n_be_invoice_bba/__openerp__.py @@ -32,7 +32,9 @@ Belgian localisation for in- and outgoing invoices (prereq to account_coda): - Rename 'reference' field labels to 'Communication' - Add support for Belgian Structured Communication -A Structured Communication can be generated automatically on outgoing invoices according to the following algorithms: +A Structured Communication can be generated automatically on outgoing invoices +according to the following algorithms: + 1) Random : +++RRR/RRRR/RRRDD+++ R..R = Random Digits, DD = Check Digits 2) Date : +++DOY/YEAR/SSSDD+++ @@ -40,8 +42,9 @@ A Structured Communication can be generated automatically on outgoing invoices a 3) Customer Reference +++RRR/RRRR/SSSDDD+++ R..R = Customer Reference without non-numeric characters, SSS = Sequence Number, DD = Check Digits) -The preferred type of Structured Communication and associated Algorithm can be specified on the Partner records. -A 'random' Structured Communication will generated if no algorithm is specified on the Partner record. +The preferred type of Structured Communication and associated Algorithm can be +specified on the Partner records. A 'random' Structured Communication will +generated if no algorithm is specified on the Partner record. """, 'depends': ['account'], diff --git a/addons/l10n_br/__openerp__.py b/addons/l10n_br/__openerp__.py index 909d4f53600..a2acd722eaf 100644 --- a/addons/l10n_br/__openerp__.py +++ b/addons/l10n_br/__openerp__.py @@ -41,9 +41,23 @@ This module consists in: - Tax Situation Code (CST) required for the electronic fiscal invoicing (NFe) -The field tax_discount has also been added in the account.tax.template and account.tax objects to allow the proper computation of some Brazilian VATs such as ICMS. The chart of account creation wizard has been extended to propagate those new data properly. +The field tax_discount has also been added in the account.tax.template and account.tax +objects to allow the proper computation of some Brazilian VATs such as ICMS. The +chart of account creation wizard has been extended to propagate those new data properly. -It's important to note however that this module lack many implementations to use OpenERP properly in Brazil. Those implementations (such as the electronic fiscal Invoicing which is already operational) are brought by more than 15 additional modules of the Brazilian Launchpad localization project https://launchpad.net/openerp.pt-br-localiz and their dependencies in the extra addons branch. Those modules aim at not breaking with the remarkable OpenERP modularity, this is why they are numerous but small. One of the reasons for maintaining those modules apart is that Brazilian Localization leaders need commit rights agility to complete the localization as companies fund the remaining legal requirements (such as soon fiscal ledgers, accounting SPED, fiscal SPED and PAF ECF that are still missing as September 2011). Those modules are also strictly licensed under AGPL V3 and today don't come with any additional paid permission for online use of 'private modules'.""", +It's important to note however that this module lack many implementations to use +OpenERP properly in Brazil. Those implementations (such as the electronic fiscal +Invoicing which is already operational) are brought by more than 15 additional +modules of the Brazilian Launchpad localization project +https://launchpad.net/openerp.pt-br-localiz and their dependencies in the extra +addons branch. Those modules aim at not breaking with the remarkable OpenERP +modularity, this is why they are numerous but small. One of the reasons for +maintaining those modules apart is that Brazilian Localization leaders need commit +rights agility to complete the localization as companies fund the remaining legal +requirements (such as soon fiscal ledgers, accounting SPED, fiscal SPED and PAF +ECF that are still missing as September 2011). Those modules are also strictly +licensed under AGPL V3 and today don't come with any additional paid permission +for online use of 'private modules'.""", 'license': 'AGPL-3', 'author': 'Akretion, OpenERP Brasil', 'website': 'http://openerpbrasil.org', From 3b36ef133917540bccf8a25a2c22fdaf04020729 Mon Sep 17 00:00:00 2001 From: "Ajay Chauhan (OpenERP)" Date: Fri, 13 Jul 2012 10:56:52 +0530 Subject: [PATCH 181/349] [IMP] : Update Description for modules bzr revid: cha@tinyerp.com-20120713052652-fy5dlrltgdmsz9z1 --- addons/l10n_br/__openerp__.py | 4 ++-- addons/l10n_ch/__openerp__.py | 20 ++++++++++---------- addons/l10n_cn/__openerp__.py | 6 +++--- addons/l10n_cr/__openerp__.py | 14 +++++++------- addons/l10n_es/__openerp__.py | 14 +++++++------- 5 files changed, 29 insertions(+), 29 deletions(-) diff --git a/addons/l10n_br/__openerp__.py b/addons/l10n_br/__openerp__.py index a2acd722eaf..022fa1b6a4d 100644 --- a/addons/l10n_br/__openerp__.py +++ b/addons/l10n_br/__openerp__.py @@ -22,8 +22,8 @@ 'name': 'Brazilian - Accounting', 'category': 'Localization/Account Charts', 'description': """ -Base module for the Brazilian localization -========================================== +Base module for the Brazilian localization. +=========================================== This module consists in: diff --git a/addons/l10n_ch/__openerp__.py b/addons/l10n_ch/__openerp__.py index d5ed358d25c..d3b7e796aee 100644 --- a/addons/l10n_ch/__openerp__.py +++ b/addons/l10n_ch/__openerp__.py @@ -36,10 +36,11 @@ You can also add ZIP and bank completion with: ------------------------------------------------------------------------ -Module incluant la localisation Suisse de TinyERP revu et corrigé par Camptocamp. Cette nouvelle version -comprend la gestion et l'émissionde BVR, le paiement électronique via DTA (pour les banques, le système postal est en développement) -et l'import du relevé de compte depuis la banque de manière automatisée. -De plus, nous avons intégré la définition de toutes les banques Suisses(adresse, swift et clearing). +Module incluant la localisation Suisse de TinyERP revu et corrigé par Camptocamp. +Cette nouvelle version comprend la gestion et l'émissionde BVR, le paiement +électronique via DTA (pour les banques, le système postal est en développement) +et l'import du relevé de compte depuis la banque de manière automatisée. De plus, +nous avons intégré la définition de toutes les banques Suisses(adresse, swift et clearing). Par ailleurs, conjointement à ce module, nous proposons la complétion NPA: @@ -52,12 +53,11 @@ Vous pouvez ajouter la completion des banques et des NPA avec with: -------------------------------------------------------------------------- TODO : -- Implement bvr import partial reconciliation -- Replace wizard by osv_memory when possible -- Add mising HELP -- Finish code comment -- Improve demo data - + - Implement bvr import partial reconciliation + - Replace wizard by osv_memory when possible + - Add mising HELP + - Finish code comment + - Improve demo data """, "version": "6.1", diff --git a/addons/l10n_cn/__openerp__.py b/addons/l10n_cn/__openerp__.py index 6e66c77e45b..e173c5ebba2 100644 --- a/addons/l10n_cn/__openerp__.py +++ b/addons/l10n_cn/__openerp__.py @@ -26,9 +26,9 @@ "website":"http://openerp-china.org", "url":"http://code.google.com/p/openerp-china/source/browse/#svn/trunk/l10n_cn", "description": """ - 添加中文省份数据 - 科目类型\会计科目表模板\增值税\辅助核算类别\管理会计凭证簿\财务会计凭证簿 - ============================================================ +添加中文省份数据 +科目类型\会计科目表模板\增值税\辅助核算类别\管理会计凭证簿\财务会计凭证簿 +============================================================ """, "depends" : ["base","account"], 'init_xml': [ diff --git a/addons/l10n_cr/__openerp__.py b/addons/l10n_cr/__openerp__.py index e224f22358a..562af835398 100644 --- a/addons/l10n_cr/__openerp__.py +++ b/addons/l10n_cr/__openerp__.py @@ -44,14 +44,14 @@ Chart of accounts for Costa Rica. ================================= Includes: -* account.type -* account.account.template -* account.tax.template -* account.tax.code.template -* account.chart.template + * account.type + * account.account.template + * account.tax.template + * account.tax.code.template + * account.chart.template -Everything is in English with Spanish translation. Further translations are welcome, please go to -http://translations.launchpad.net/openerp-costa-rica +Everything is in English with Spanish translation. Further translations are welcome, +please go to http://translations.launchpad.net/openerp-costa-rica. """, 'depends': ['account', 'account_chart', 'base'], 'init_xml': [], diff --git a/addons/l10n_es/__openerp__.py b/addons/l10n_es/__openerp__.py index 95b8ab7b57c..aabe62ac567 100644 --- a/addons/l10n_es/__openerp__.py +++ b/addons/l10n_es/__openerp__.py @@ -31,14 +31,14 @@ Spanish Charts of Accounts (PGCE 2008). ======================================= -* Defines the following chart of account templates: - * Spanish General Chart of Accounts 2008. - * Spanish General Chart of Accounts 2008 for small and medium companies. -* Defines templates for sale and purchase VAT. -* Defines tax code templates. + * Defines the following chart of account templates: + * Spanish General Chart of Accounts 2008. + * Spanish General Chart of Accounts 2008 for small and medium companies. + * Defines templates for sale and purchase VAT. + * Defines tax code templates. -Note: You should install the l10n_ES_account_balance_report module -for yearly account reporting (balance, profit & losses). +Note: You should install the l10n_ES_account_balance_report module for yearly + account reporting (balance, profit & losses). """, "license" : "GPL-3", "depends" : ["account", "base_vat", "base_iban"], From a68bc608286d2a3c74cc4464470fc29023ba245d Mon Sep 17 00:00:00 2001 From: "Ajay Chauhan (OpenERP)" Date: Fri, 13 Jul 2012 11:20:22 +0530 Subject: [PATCH 182/349] [IMP] : Update Description for modules bzr revid: cha@tinyerp.com-20120713055022-bn9rl00g9dzkfjg8 --- addons/l10n_fr/__openerp__.py | 16 ++++++++++--- addons/l10n_fr_hr_payroll/__openerp__.py | 25 +++++++++++--------- addons/l10n_fr_rib/__openerp__.py | 29 ++++++++++++++++-------- addons/l10n_gt/__openerp__.py | 4 +++- addons/l10n_hn/__openerp__.py | 5 +++- 5 files changed, 53 insertions(+), 26 deletions(-) diff --git a/addons/l10n_fr/__openerp__.py b/addons/l10n_fr/__openerp__.py index bab6af2d49c..ec31f71513a 100644 --- a/addons/l10n_fr/__openerp__.py +++ b/addons/l10n_fr/__openerp__.py @@ -35,11 +35,21 @@ This is the module to manage the accounting chart for France in OpenERP. ======================================================================== -This module applies to companies based in France mainland. It doesn't apply to companies based in the DOM-TOMs (Guadeloupe, Martinique, Guyane, Réunion, Mayotte) +This module applies to companies based in France mainland. It doesn't apply to +companies based in the DOM-TOMs (Guadeloupe, Martinique, Guyane, Réunion, Mayotte). -This localisation module creates the VAT taxes of type "tax included" for purchases (it is notably required when you use the module "hr_expense"). Beware that these "tax included" VAT taxes are not managed by the fiscal positions provided by this module (because it is complex to manage both "tax excluded" and "tax included" scenarios in fiscal positions). +This localisation module creates the VAT taxes of type "tax included" for purchases +(it is notably required when you use the module "hr_expense"). Beware that these +"tax included" VAT taxes are not managed by the fiscal positions provided by this +module (because it is complex to manage both "tax excluded" and "tax included" +scenarios in fiscal positions). -This localisation module doesn't properly handle the scenario when a France-mainland company sells services to a company based in the DOMs. We could manage it in the fiscal positions, but it would require to differentiate between "product" VAT taxes and "service" VAT taxes. We consider that it is too "heavy" to have this by default in l10n_fr ; companies that sell services to DOM-based companies should update the configuration of their taxes and fiscal positions manually. +This localisation module doesn't properly handle the scenario when a France-mainland +company sells services to a company based in the DOMs. We could manage it in the +fiscal positions, but it would require to differentiate between "product" VAT taxes +and "service" VAT taxes. We consider that it is too "heavy" to have this by default +in l10n_fr; companies that sell services to DOM-based companies should update the +configuration of their taxes and fiscal positions manually. Credits: Sistheo, Zeekom, CrysaLEAD, Akretion and Camptocamp. """, diff --git a/addons/l10n_fr_hr_payroll/__openerp__.py b/addons/l10n_fr_hr_payroll/__openerp__.py index b9bc3b74f22..fd1f595a7e3 100755 --- a/addons/l10n_fr_hr_payroll/__openerp__.py +++ b/addons/l10n_fr_hr_payroll/__openerp__.py @@ -25,19 +25,22 @@ 'depends': ['hr_payroll', 'l10n_fr'], 'version': '1.0', 'description': """ -French Payroll Rules -======================= +French Payroll Rules. +===================== - -Configuration of hr_payroll for french localization - -All main contributions rules for french payslip, for 'cadre' and 'non-cadre' - -New payslip report + - Configuration of hr_payroll for french localization + - All main contributions rules for french payslip, for 'cadre' and 'non-cadre' + - New payslip report - TODO : - -Integration with holidays module for deduction and allowance - -Integration with hr_payroll_account for the automatic account_move_line creation from the payslip - -Continue to integrate the contribution. Only the main contribution are currently implemented - -Remake the report under webkit - -The payslip.line with appears_in_payslip = False should appears in the payslip interface, but not in the payslip report +TODO : + - Integration with holidays module for deduction and allowance + - Integration with hr_payroll_account for the automatic account_move_line + creation from the payslip + - Continue to integrate the contribution. Only the main contribution are + currently implemented + - Remake the report under webkit + - The payslip.line with appears_in_payslip = False should appears in the + payslip interface, but not in the payslip report """, 'active': False, diff --git a/addons/l10n_fr_rib/__openerp__.py b/addons/l10n_fr_rib/__openerp__.py index ac1b03f4b3e..fedac46381d 100644 --- a/addons/l10n_fr_rib/__openerp__.py +++ b/addons/l10n_fr_rib/__openerp__.py @@ -25,17 +25,26 @@ "category": 'Hidden/Dependency', 'description': ''' 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". +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': ['account', 'base_iban'], diff --git a/addons/l10n_gt/__openerp__.py b/addons/l10n_gt/__openerp__.py index f05bbdaaff1..44389e68439 100644 --- a/addons/l10n_gt/__openerp__.py +++ b/addons/l10n_gt/__openerp__.py @@ -40,7 +40,9 @@ This is the base module to manage the accounting chart for Guatemala. ===================================================================== -Agrega una nomenclatura contable para Guatemala. También icluye impuestos y la moneda del Quetzal. -- Adds accounting chart for Guatemala. It also includes taxes and the Quetzal currency""", +Agrega una nomenclatura contable para Guatemala. También icluye impuestos y +la moneda del Quetzal. -- Adds accounting chart for Guatemala. It also includes +taxes and the Quetzal currency.""", 'author': 'José Rodrigo Fernández Menegazzo', 'website': 'http://solucionesprisma.com/', 'depends': ['base', 'account', 'account_chart'], diff --git a/addons/l10n_hn/__openerp__.py b/addons/l10n_hn/__openerp__.py index af8bb4cfa1d..25655e52e70 100644 --- a/addons/l10n_hn/__openerp__.py +++ b/addons/l10n_hn/__openerp__.py @@ -36,7 +36,10 @@ 'name': 'Honduras - Accounting', 'version': '0.1', 'category': 'Localization/Account Charts', - 'description': """Agrega una nomenclatura contable para Honduras. También incluye impuestos y la moneda Lempira. -- Adds accounting chart for Honduras. It also includes taxes and the Lempira currency""", + 'description': """ +Agrega una nomenclatura contable para Honduras. También incluye impuestos y la +moneda Lempira. -- Adds accounting chart for Honduras. It also includes taxes +and the Lempira currency.""", 'author': 'Salvatore Josue Trimarchi Pinto', 'website': 'http://trimarchi.co.cc', 'depends': ['base', 'account', 'account_chart'], From 12f3cef6292cf11e20827ce397f9d10aac0b6f35 Mon Sep 17 00:00:00 2001 From: "Ajay Chauhan (OpenERP)" Date: Fri, 13 Jul 2012 11:32:55 +0530 Subject: [PATCH 183/349] [IMP] : Update Description for modules bzr revid: cha@tinyerp.com-20120713060255-izdtqq9196n2emz6 --- addons/l10n_in/__openerp__.py | 4 ++-- addons/l10n_lu/__openerp__.py | 2 +- addons/l10n_ma/__openerp__.py | 6 +++++- addons/l10n_multilang/__openerp__.py | 7 ++++--- addons/l10n_nl/__openerp__.py | 23 ++++++++++++++++------- 5 files changed, 28 insertions(+), 14 deletions(-) diff --git a/addons/l10n_in/__openerp__.py b/addons/l10n_in/__openerp__.py index c13139f6736..f052a2d63ca 100644 --- a/addons/l10n_in/__openerp__.py +++ b/addons/l10n_in/__openerp__.py @@ -23,8 +23,8 @@ "name": "India - Accounting", "version": "1.0", "description": """ -Indian Accounting : Chart of Account. -===================================== +Indian Accounting: Chart of Account. +==================================== Indian accounting chart and localization. """, diff --git a/addons/l10n_lu/__openerp__.py b/addons/l10n_lu/__openerp__.py index bb12abd76fc..1ade34faaca 100644 --- a/addons/l10n_lu/__openerp__.py +++ b/addons/l10n_lu/__openerp__.py @@ -28,7 +28,7 @@ This is the base module to manage the accounting chart for Luxembourg. ====================================================================== - * the KLUWER Chart of Accounts, + * the KLUWER Chart of Accounts * the Tax Code Chart for Luxembourg * the main taxes used in Luxembourg""", 'author': 'OpenERP SA', diff --git a/addons/l10n_ma/__openerp__.py b/addons/l10n_ma/__openerp__.py index 21b7c632d6b..52f453af8bb 100644 --- a/addons/l10n_ma/__openerp__.py +++ b/addons/l10n_ma/__openerp__.py @@ -28,7 +28,11 @@ This is the base module to manage the accounting chart for Maroc. ================================================================= -Ce Module charge le modèle du plan de comptes standard Marocain et permet de générer les états comptables aux normes marocaines (Bilan, CPC (comptes de produits et charges), balance générale à 6 colonnes, Grand livre cumulatif...). L'intégration comptable a été validé avec l'aide du Cabinet d'expertise comptable Seddik au cours du troisième trimestre 2010""", +Ce Module charge le modèle du plan de comptes standard Marocain et permet de +générer les états comptables aux normes marocaines (Bilan, CPC (comptes de +produits et charges), balance générale à 6 colonnes, Grand livre cumulatif...). +L'intégration comptable a été validé avec l'aide du Cabinet d'expertise comptable +Seddik au cours du troisième trimestre 2010.""", "website": "http://www.kazacube.com", "depends" : ["base", "account"], "init_xml" : [], diff --git a/addons/l10n_multilang/__openerp__.py b/addons/l10n_multilang/__openerp__.py index 42ca20a2f8e..cf521f124f4 100644 --- a/addons/l10n_multilang/__openerp__.py +++ b/addons/l10n_multilang/__openerp__.py @@ -25,10 +25,11 @@ "author" : "OpenERP SA", "category": 'Hidden/Dependency', "description": """ - * Multi language 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. """, 'website': 'http://www.openerp.com', 'init_xml': [], diff --git a/addons/l10n_nl/__openerp__.py b/addons/l10n_nl/__openerp__.py index 562fd0ab876..b46c8781f42 100644 --- a/addons/l10n_nl/__openerp__.py +++ b/addons/l10n_nl/__openerp__.py @@ -94,19 +94,28 @@ This is the module to manage the accounting chart for Netherlands in OpenERP. ============================================================================= Read changelog in file __openerp__.py for version information. -Dit is een basismodule om een uitgebreid grootboek- en BTW schema voor Nederlandse bedrijven te installeren in OpenERP versie 5. +Dit is een basismodule om een uitgebreid grootboek- en BTW schema voor +Nederlandse bedrijven te installeren in OpenERP versie 5. -De BTW rekeningen zijn waar nodig gekoppeld om de juiste rapportage te genereren, denk b.v. aan intracommunautaire verwervingen -waarbij u 19% BTW moet opvoeren, maar tegelijkertijd ook 19% als voorheffing weer mag aftrekken. +De BTW rekeningen zijn waar nodig gekoppeld om de juiste rapportage te genereren, +denk b.v. aan intracommunautaire verwervingen waarbij u 19% BTW moet opvoeren, +maar tegelijkertijd ook 19% als voorheffing weer mag aftrekken. Na installatie van deze module word de configuratie wizard voor "Accounting" aangeroepen. - * U krijgt een lijst met grootboektemplates aangeboden waarin zich ook het Nederlandse grootboekschema bevind. + * U krijgt een lijst met grootboektemplates aangeboden waarin zich ook het + Nederlandse grootboekschema bevind. - * Als de configuratie wizard start, wordt u gevraagd om de naam van uw bedrijf in te voeren, welke grootboekschema te installeren, uit hoeveel cijfers een grootboekrekening mag bestaan, het rekeningnummer van uw bank en de currency om Journalen te creeren. + * Als de configuratie wizard start, wordt u gevraagd om de naam van uw bedrijf + in te voeren, welke grootboekschema te installeren, uit hoeveel cijfers een + grootboekrekening mag bestaan, het rekeningnummer van uw bank en de currency + om Journalen te creeren. -Let op!! -> De template van het Nederlandse rekeningschema is opgebouwd uit 4 cijfers. Dit is het minimale aantal welk u moet invullen, u mag het aantal verhogen. De extra cijfers worden dan achter het rekeningnummer aangevult met "nullen" +Let op!! -> De template van het Nederlandse rekeningschema is opgebouwd uit 4 +cijfers. Dit is het minimale aantal welk u moet invullen, u mag het aantal verhogen. +De extra cijfers worden dan achter het rekeningnummer aangevult met "nullen". - * Dit is dezelfe configuratie wizard welke aangeroepen kan worden via Financial Management/Configuration/Financial Accounting/Financial Accounts/Generate Chart of Accounts from a Chart Template. + * Dit is dezelfe configuratie wizard welke aangeroepen kan worden via + Financial Management/Configuration/Financial Accounting/Financial Accounts/Generate Chart of Accounts from a Chart Template. """, "author" : "Veritos - Jan Verlaan", From 413535b2ca88322bd51634fdc9cdf7a01ee621c7 Mon Sep 17 00:00:00 2001 From: "Ajay Chauhan (OpenERP)" Date: Fri, 13 Jul 2012 11:41:34 +0530 Subject: [PATCH 184/349] [IMP] : Update Description for modules bzr revid: cha@tinyerp.com-20120713061134-rg66cns2fqnhovcj --- addons/l10n_pe/__openerp__.py | 5 +++-- addons/l10n_syscohada/__openerp__.py | 13 ++++++++----- addons/l10n_tr/__openerp__.py | 5 +++-- addons/l10n_uk/__openerp__.py | 4 +++- addons/l10n_us/__openerp__.py | 2 +- addons/l10n_uy/__openerp__.py | 6 +++--- 6 files changed, 21 insertions(+), 14 deletions(-) diff --git a/addons/l10n_pe/__openerp__.py b/addons/l10n_pe/__openerp__.py index fa65c1033b7..7908664ca83 100644 --- a/addons/l10n_pe/__openerp__.py +++ b/addons/l10n_pe/__openerp__.py @@ -22,9 +22,10 @@ "name": "Peru Localization Chart Account", "version": "1.0", "description": """ -Peruvian accounting chart and tax localization. Acording the PCGE 2010 +Peruvian accounting chart and tax localization. Acording the PCGE 2010. -Plan contable peruano e impuestos de acuerdo a disposiciones vigentes de la SUNAT 2011 (PCGE 2010) +Plan contable peruano e impuestos de acuerdo a disposiciones vigentes de la +SUNAT 2011 (PCGE 2010). """, "author": ["Cubic ERP"], diff --git a/addons/l10n_syscohada/__openerp__.py b/addons/l10n_syscohada/__openerp__.py index 01c1aaef96f..2fd6917ec11 100644 --- a/addons/l10n_syscohada/__openerp__.py +++ b/addons/l10n_syscohada/__openerp__.py @@ -24,12 +24,15 @@ "version" : "1.0", "author" : "Baamtu Senegal", "category" : "Localization/Account Charts", - "description": """This module implements the accounting chart for OHADA area. - It allows any company or association to manage its financial accounting. - Countries that use OHADA are the following: + "description": """ +This module implements the accounting chart for OHADA area. +=========================================================== + +It allows any company or association to manage its financial accounting. +Countries that use OHADA are the following: Benin, Burkina Faso, Cameroon, Central African Republic, Comoros, Congo, - Ivory Coast, Gabon, Guinea, Guinea Bissau, - Equatorial Guinea, Mali, Niger, Replica of Democratic Congo, Senegal, Chad, Togo. + Ivory Coast, Gabon, Guinea, Guinea Bissau, Equatorial Guinea, Mali, Niger, + Replica of Democratic Congo, Senegal, Chad, Togo. """, "website": "http://www.baamtu.com", "depends" : ["account", "base_vat"], diff --git a/addons/l10n_tr/__openerp__.py b/addons/l10n_tr/__openerp__.py index ad4621499d3..d72865a216c 100644 --- a/addons/l10n_tr/__openerp__.py +++ b/addons/l10n_tr/__openerp__.py @@ -23,10 +23,11 @@ 'category': 'Localization/Account Charts', 'description': """ Türkiye için Tek düzen hesap planı şablonu OpenERP Modülü. -============================================================================== +========================================================== Bu modül kurulduktan sonra, Muhasebe yapılandırma sihirbazı çalışır - * Sihirbaz sizden hesap planı şablonu, planın kurulacağı şirket,banka hesap bilgileriniz,ilgili para birimi gibi bilgiler isteyecek. + * Sihirbaz sizden hesap planı şablonu, planın kurulacağı şirket, banka hesap + bilgileriniz, ilgili para birimi gibi bilgiler isteyecek. """, 'author': 'Ahmet Altınışık', 'maintainer':'https://launchpad.net/~openerp-turkey', diff --git a/addons/l10n_uk/__openerp__.py b/addons/l10n_uk/__openerp__.py index f6e8212aed0..19a9747ea6a 100644 --- a/addons/l10n_uk/__openerp__.py +++ b/addons/l10n_uk/__openerp__.py @@ -23,7 +23,9 @@ 'name': 'UK - Accounting', 'version': '1.0', 'category': 'Localization/Account Charts', - 'description': """This is the latest UK OpenERP localisation necesary to run OpenERP accounting for UK SME's with: + 'description': """ +This is the latest UK OpenERP localisation necesary to run OpenERP accounting +for UK SME's with: - a CT600-ready chart of accounts - VAT100-ready tax structure - InfoLogic UK counties listing diff --git a/addons/l10n_us/__openerp__.py b/addons/l10n_us/__openerp__.py index 4aac9b14287..f900c3d5e99 100644 --- a/addons/l10n_us/__openerp__.py +++ b/addons/l10n_us/__openerp__.py @@ -24,7 +24,7 @@ "author": "OpenERP SA", "category": 'Localization/Account Charts', "description": """ - United States - Chart of accounts +United States - Chart of accounts. """, 'website': 'http://www.openerp.com', 'init_xml': [], diff --git a/addons/l10n_uy/__openerp__.py b/addons/l10n_uy/__openerp__.py index 4edfe22e1e8..5e4eb51ffc0 100644 --- a/addons/l10n_uy/__openerp__.py +++ b/addons/l10n_uy/__openerp__.py @@ -28,10 +28,10 @@ "category" : "Localization/Account Charts", "website" : "https://launchpad.net/openerp-uruguay", "description": """ -General Chart of Accounts -========================= +General Chart of Accounts. +========================== -Provide Templates for Chart of Accounts, Taxes for Uruguay +Provide Templates for Chart of Accounts, Taxes for Uruguay. """, "license" : "AGPL-3", From e0d24ed957fa0ec6c30d4bfe27d728ecf1e13b67 Mon Sep 17 00:00:00 2001 From: "Ajay Chauhan (OpenERP)" Date: Fri, 13 Jul 2012 12:28:10 +0530 Subject: [PATCH 185/349] [IMP] : Update Description for modules bzr revid: cha@tinyerp.com-20120713065810-91bvrnod20nr38gq --- addons/lunch/__openerp__.py | 15 ++++----------- addons/marketing_campaign/__openerp__.py | 22 +++++++++++++++------- addons/membership/__openerp__.py | 8 ++++---- addons/mrp_operations/__openerp__.py | 3 ++- addons/pad/__openerp__.py | 4 ++-- 5 files changed, 27 insertions(+), 25 deletions(-) diff --git a/addons/lunch/__openerp__.py b/addons/lunch/__openerp__.py index dcc33ed9c44..ad476588e93 100644 --- a/addons/lunch/__openerp__.py +++ b/addons/lunch/__openerp__.py @@ -22,22 +22,15 @@ { "name": "Lunch Orders", "author": "OpenERP SA", - "Description": """ - The lunch module is for keeping a record of the order placed and payment of the orders. - ======================================================================================= - - The products are defined under categories and the payment records are maintained user-wise. - Every user has a cashbox which keeps track of the amount paid for a particular order. - - """, "version": "0.1", "depends": ["base_tools"], "category" : "Tools", 'description': """ - The base module to manage lunch. +The base module to manage lunch. +================================ - keep track for the Lunch Order, Cash Moves, CashBox, Product. - Apply Different Category for the product. +keep track for the Lunch Order, Cash Moves, CashBox, Product. Apply Different +Category for the product. """, "init_xml": [], "update_xml": [ diff --git a/addons/marketing_campaign/__openerp__.py b/addons/marketing_campaign/__openerp__.py index 8d2166998ac..e0cf8b56439 100644 --- a/addons/marketing_campaign/__openerp__.py +++ b/addons/marketing_campaign/__openerp__.py @@ -35,15 +35,23 @@ This module provides leads automation through marketing campaigns (campaigns can ========================================================================================================================================= The campaigns are dynamic and multi-channels. The process is as follows: - * Design marketing campaigns like workflows, including email templates to send, reports to print and send by email, custom actions. - * Define input segments that will select the items that should enter the campaign (e.g leads from certain countries.) - * Run you campaign in simulation mode to test it real-time or accelerated, and fine-tune it - * You may also start the real campaign in manual mode, where each action requires manual validation - * Finally launch your campaign live, and watch the statistics as the campaign does everything fully automatically. + * Design marketing campaigns like workflows, including email templates to + send, reports to print and send by email, custom actions + * Define input segments that will select the items that should enter the + campaign (e.g leads from certain countries.) + * Run you campaign in simulation mode to test it real-time or accelerated, + and fine-tune it + * You may also start the real campaign in manual mode, where each action + requires manual validation + * Finally launch your campaign live, and watch the statistics as the + campaign does everything fully automatically. -While the campaign runs you can of course continue to fine-tune the parameters, input segments, workflow. +While the campaign runs you can of course continue to fine-tune the parameters, +input segments, workflow. -Note: If you need demo data, you can install the marketing_campaign_crm_demo module, but this will also install the CRM application as it depends on CRM Leads. +Note: If you need demo data, you can install the marketing_campaign_crm_demo + module, but this will also install the CRM application as it depends on + CRM Leads. """, 'website': 'http://www.openerp.com', 'init_xml': [], diff --git a/addons/membership/__openerp__.py b/addons/membership/__openerp__.py index 48a4b77cf68..eae5861e93c 100644 --- a/addons/membership/__openerp__.py +++ b/addons/membership/__openerp__.py @@ -29,10 +29,10 @@ This module allows you to manage all operations for managing memberships. ========================================================================= It supports different kind of members: -* Free member -* Associated member (eg.: a group subscribes to a membership for all subsidiaries) -* Paid members, -* Special member prices, ... + * Free member + * Associated member (eg.: a group subscribes to a membership for all subsidiaries) + * Paid members + * Special member prices It is integrated with sales and accounting to allow you to automatically invoice and send propositions for membership renewal. diff --git a/addons/mrp_operations/__openerp__.py b/addons/mrp_operations/__openerp__.py index 61b745bd9d6..4950b85aef0 100644 --- a/addons/mrp_operations/__openerp__.py +++ b/addons/mrp_operations/__openerp__.py @@ -29,7 +29,8 @@ This module adds state, date_start, date_stop in manufacturing order operation l ============================================================================================================= Status: draft, confirm, done, cancel -When finishing/confirming, cancelling manufacturing orders set all state lines to the according state +When finishing/confirming, cancelling manufacturing orders set all state lines +to the according state. Create menus: Manufacturing > Manufacturing > Work Orders diff --git a/addons/pad/__openerp__.py b/addons/pad/__openerp__.py index 267f595c7e5..8949091e24d 100644 --- a/addons/pad/__openerp__.py +++ b/addons/pad/__openerp__.py @@ -7,8 +7,8 @@ Adds enhanced support for (Ether)Pad attachments in the web client. =================================================================== -Lets the company customize which Pad installation should be used to link to new pads -(by default, http://ietherpad.com/). +Lets the company customize which Pad installation should be used to link to new +pads (by default, http://ietherpad.com/). """, 'author': 'OpenERP SA', 'website': 'http://openerp.com', From 5847fae7a3dbb243e6112add7756d18f3585e0e5 Mon Sep 17 00:00:00 2001 From: "Ajay Chauhan (OpenERP)" Date: Fri, 13 Jul 2012 14:30:33 +0530 Subject: [PATCH 186/349] [IMP] : Update Description for modules bzr revid: cha@tinyerp.com-20120713090033-h0lnq0rceganv5mv --- addons/pad_project/__openerp__.py | 3 +-- addons/plugin/__openerp__.py | 4 +--- addons/plugin_outlook/__openerp__.py | 9 +++++---- addons/portal/__openerp__.py | 4 ++-- addons/product/__openerp__.py | 13 ++++++------- 5 files changed, 15 insertions(+), 18 deletions(-) diff --git a/addons/pad_project/__openerp__.py b/addons/pad_project/__openerp__.py index 8ca761d2737..f8ee3138d27 100644 --- a/addons/pad_project/__openerp__.py +++ b/addons/pad_project/__openerp__.py @@ -24,8 +24,7 @@ 'version': '1.0', "category": "Project Management", 'description': """ -This module adds a PAD in all project kanban views -================================================== +This module adds a PAD in all project kanban views. """, 'author': 'OpenERP SA', 'website': 'http://www.openerp.com', diff --git a/addons/plugin/__openerp__.py b/addons/plugin/__openerp__.py index dba41649ff6..801e0571c58 100644 --- a/addons/plugin/__openerp__.py +++ b/addons/plugin/__openerp__.py @@ -25,9 +25,7 @@ 'version': '1.0', 'category': 'Hidden/Dependency', 'description': """ -The common interface for pugin. -===================================================== - +The common interface for plug-in. """, 'author': 'OpenERP SA', 'website': 'http://www.openerp.com', diff --git a/addons/plugin_outlook/__openerp__.py b/addons/plugin_outlook/__openerp__.py index ac6cb32cae7..077b0aa6746 100644 --- a/addons/plugin_outlook/__openerp__.py +++ b/addons/plugin_outlook/__openerp__.py @@ -30,10 +30,11 @@ 'description': ''' This module provides the Outlook Plug-in. ========================================= -Outlook plug-in allows you to select an object that you would like to add -to your email and its attachments from MS Outlook. You can select a partner, a task, -a project, an analytical account, or any other object and archive selected -mail into mail.message with attachments. + +Outlook plug-in allows you to select an object that you would like to add to +your email and its attachments from MS Outlook. You can select a partner, a task, +a project, an analytical account, or any other object and archive selected mail +into mail.message with attachments. ''', 'init_xml' : [], 'demo_xml' : [], diff --git a/addons/portal/__openerp__.py b/addons/portal/__openerp__.py index 53204ec8064..70791995958 100644 --- a/addons/portal/__openerp__.py +++ b/addons/portal/__openerp__.py @@ -26,8 +26,8 @@ 'author' : "OpenERP SA", 'category': 'Portal', 'description': """ -This module defines 'portals' to customize the access to your OpenERP database -for external users. +This module defines 'portals' to customize the access to your OpenERP database for external users. +================================================================================================== A portal defines customized user menu and access rights for a group of users (the ones associated to that portal). It also associates user groups to the diff --git a/addons/product/__openerp__.py b/addons/product/__openerp__.py index 9b4d2cadee1..19f5e552ab0 100644 --- a/addons/product/__openerp__.py +++ b/addons/product/__openerp__.py @@ -32,17 +32,16 @@ This is the base module for managing products and pricelists in OpenERP. ======================================================================== -Products support variants, different pricing methods, suppliers -information, make to stock/order, different unit of measures, -packaging and properties. +Products support variants, different pricing methods, suppliers information, +make to stock/order, different unit of measures, packaging and properties. Pricelists support: * Multiple-level of discount (by product, category, quantities) * Compute price based on different criteria: - * Other pricelist, - * Cost price, - * List price, - * Supplier price, ... + * Other pricelist + * Cost price + * List price + * Supplier price Pricelists preferences by product and/or partners. From 339051cadf4b9af80c2671521fe0de7441714b4f Mon Sep 17 00:00:00 2001 From: "Ajay Chauhan (OpenERP)" Date: Fri, 13 Jul 2012 14:43:24 +0530 Subject: [PATCH 187/349] [IMP] : Update Description for modules bzr revid: cha@tinyerp.com-20120713091324-sengeariqawfira9 --- .../product_visible_discount/__openerp__.py | 8 ++++--- addons/project_long_term/__openerp__.py | 16 ++++++++----- addons/project_mailgate/__openerp__.py | 13 +++++----- addons/project_mrp/__openerp__.py | 24 +++++++++---------- addons/project_retro_planning/__openerp__.py | 3 ++- 5 files changed, 35 insertions(+), 29 deletions(-) diff --git a/addons/product_visible_discount/__openerp__.py b/addons/product_visible_discount/__openerp__.py index d957c6d87ed..0bba2cca4ac 100644 --- a/addons/product_visible_discount/__openerp__.py +++ b/addons/product_visible_discount/__openerp__.py @@ -29,9 +29,11 @@ This module lets you calculate discounts on Sale Order lines and Invoice lines b To this end, a new check box named "Visible Discount" is added to the pricelist form. Example: - For the product PC1 and the partner "Asustek": if listprice=450, and the price calculated using Asustek's pricelist is 225 - If the check box is checked, we will have on the sale order line: Unit price=450, Discount=50,00, Net price=225 - If the check box is unchecked, we will have on Sale Order and Invoice lines: Unit price=225, Discount=0,00, Net price=225 + For the product PC1 and the partner "Asustek": if listprice=450, and the price + calculated using Asustek's pricelist is 225. If the check box is checked, we + will have on the sale order line: Unit price=450, Discount=50,00, Net price=225. + If the check box is unchecked, we will have on Sale Order and Invoice lines: + Unit price=225, Discount=0,00, Net price=225. """, "depends": ["sale"], "demo_xml": [], diff --git a/addons/project_long_term/__openerp__.py b/addons/project_long_term/__openerp__.py index 8ed12a06e10..b44bd92ad57 100644 --- a/addons/project_long_term/__openerp__.py +++ b/addons/project_long_term/__openerp__.py @@ -31,14 +31,18 @@ Long Term Project management module that tracks planning, scheduling, resources allocation. =========================================================================================== -Features --------- +Features: +--------- * Manage Big project. * Define various Phases of Project. - * Compute Phase Scheduling: Compute start date and end date of the phases which are in draft,open and pending state of the project given. - If no project given then all the draft,open and pending state phases will be taken. - * Compute Task Scheduling: This works same as the scheduler button on project.phase. It takes the project as argument and computes all the open,draft and pending tasks. - * Schedule Tasks: All the tasks which are in draft,pending and open state are scheduled with taking the phase's start date + * Compute Phase Scheduling: Compute start date and end date of the phases + which are in draft, open and pending state of the project given. If no + project given then all the draft, open and pending state phases will be taken. + * Compute Task Scheduling: This works same as the scheduler button on + project.phase. It takes the project as argument and computes all the open, + draft and pending tasks. + * Schedule Tasks: All the tasks which are in draft,pending and open state + are scheduled with taking the phase's start date """, "init_xml": [], "demo_xml": ["project_long_term_demo.xml"], diff --git a/addons/project_mailgate/__openerp__.py b/addons/project_mailgate/__openerp__.py index dad9fd09eae..bd1cb5f4e20 100644 --- a/addons/project_mailgate/__openerp__.py +++ b/addons/project_mailgate/__openerp__.py @@ -29,18 +29,17 @@ "images": ["images/project_mailgate_task.jpeg"], "depends": ["project", "mail"], "description": """ -This module can automatically create Project Tasks based on incoming emails -=========================================================================== +This module can automatically create Project Tasks based on incoming emails. +============================================================================ Allows creating tasks based on new emails arriving at a given mailbox, similarly to what the CRM application has for Leads/Opportunities. There are two common alternatives to configure the mailbox integration: - * Install the ``fetchmail`` module and configure a new mailbox, then select - ``Project Tasks`` as the target for incoming emails. - * Set it up manually on your mail server based on the 'mail gateway' script - provided in the ``mail`` module - and connect it to the `project.task` model. - + * Install the ``fetchmail`` module and configure a new mailbox, then select + ``Project Tasks`` as the target for incoming emails. + * Set it up manually on your mail server based on the 'mail gateway' script + provided in the ``mail`` module - and connect it to the `project.task` model. """, "init_xml": [], diff --git a/addons/project_mrp/__openerp__.py b/addons/project_mrp/__openerp__.py index 9992bd3b2b7..c5c17ec85e0 100644 --- a/addons/project_mrp/__openerp__.py +++ b/addons/project_mrp/__openerp__.py @@ -25,24 +25,24 @@ 'version': '1.0', "category": "Project Management", 'description': """ -Automatically creates project tasks from procurement lines -========================================================== +Automatically creates project tasks from procurement lines. +=========================================================== -This module will automatically create a new task for each procurement -order line (e.g. for sale order lines), if the corresponding product -meets the following characteristics: +This module will automatically create a new task for each procurement order line +(e.g. for sale order lines), if the corresponding product meets the following +characteristics: - * Type = Service - * Procurement method (Order fulfillment) = MTO (make to order) - * Supply/Procurement method = Produce + * Type = Service + * Procurement method (Order fulfillment) = MTO (make to order) + * Supply/Procurement method = Produce If on top of that a projet is specified on the product form (in the Procurement -tab), then the new task will be created in that specific project. -Otherwise, the new task will not belong to any project, and may be added to a -project manually later. +tab), then the new task will be created in that specific project. Otherwise, the +new task will not belong to any project, and may be added to a project manually +later. When the project task is completed or cancelled, the workflow of the corresponding -procurement line is updated accordingly. For example if this procurement corresponds +procurement line is updated accordingly. For example, if this procurement corresponds to a sale order line, the sale order line will be considered delivered when the task is completed. diff --git a/addons/project_retro_planning/__openerp__.py b/addons/project_retro_planning/__openerp__.py index d334a421de4..f5fa2d11d89 100644 --- a/addons/project_retro_planning/__openerp__.py +++ b/addons/project_retro_planning/__openerp__.py @@ -27,7 +27,8 @@ Changes dates according to change in project End Date. ====================================================== -If end date of project is changed then the deadline date and start date for all the tasks will change accordingly. +If end date of project is changed then the deadline date and start date for all +the tasks will change accordingly. """, 'author': 'OpenERP SA', 'depends': ['base', 'project'], From 01981534f6fe8d61c200baf2b66257a003d478cb Mon Sep 17 00:00:00 2001 From: "Ajay Chauhan (OpenERP)" Date: Fri, 13 Jul 2012 15:01:14 +0530 Subject: [PATCH 188/349] [IMP] : Update Description for modules bzr revid: cha@tinyerp.com-20120713093114-wzrprgaeo34tzjbx --- addons/project_timesheet/__openerp__.py | 5 +++-- addons/purchase_analytic_plans/__openerp__.py | 4 ++-- .../purchase_double_validation/__openerp__.py | 4 ++-- addons/purchase_requisition/__openerp__.py | 5 +++-- addons/report_intrastat/__openerp__.py | 3 ++- addons/report_webkit/__openerp__.py | 22 +++++++++---------- 6 files changed, 22 insertions(+), 21 deletions(-) diff --git a/addons/project_timesheet/__openerp__.py b/addons/project_timesheet/__openerp__.py index f1a82867a6f..569ccc1023b 100644 --- a/addons/project_timesheet/__openerp__.py +++ b/addons/project_timesheet/__openerp__.py @@ -27,8 +27,9 @@ Synchronization of project task work entries with timesheet entries. ==================================================================== -This module lets you transfer the entries under tasks defined for Project Management to -the Timesheet line entries for particular date and particular user with the effect of creating, editing and deleting either ways. +This module lets you transfer the entries under tasks defined for Project +Management to the Timesheet line entries for particular date and particular user +with the effect of creating, editing and deleting either ways. """, 'author': 'OpenERP SA', diff --git a/addons/purchase_analytic_plans/__openerp__.py b/addons/purchase_analytic_plans/__openerp__.py index 73a222ec551..283923895d6 100644 --- a/addons/purchase_analytic_plans/__openerp__.py +++ b/addons/purchase_analytic_plans/__openerp__.py @@ -28,8 +28,8 @@ The base module to manage analytic distribution and purchase orders. ==================================================================== -Allows the user to maintain several analysis plans. These let you split -a line on a supplier purchase order into several accounts and analytic plans. +Allows the user to maintain several analysis plans. These let you split a line +on a supplier purchase order into several accounts and analytic plans. """, 'author': 'OpenERP SA', 'website': 'http://www.openerp.com', diff --git a/addons/purchase_double_validation/__openerp__.py b/addons/purchase_double_validation/__openerp__.py index 47124e689ef..970c85bc08c 100644 --- a/addons/purchase_double_validation/__openerp__.py +++ b/addons/purchase_double_validation/__openerp__.py @@ -30,8 +30,8 @@ Double-validation for purchases exceeding minimum amount. ========================================================= -This module modifies the purchase workflow in order to validate purchases -that exceeds minimum amount set by configuration wizard. +This module modifies the purchase workflow in order to validate purchases that +exceeds minimum amount set by configuration wizard. """, 'website': 'http://www.openerp.com', 'init_xml': [], diff --git a/addons/purchase_requisition/__openerp__.py b/addons/purchase_requisition/__openerp__.py index e6ca746841b..6824ef5d725 100644 --- a/addons/purchase_requisition/__openerp__.py +++ b/addons/purchase_requisition/__openerp__.py @@ -28,8 +28,9 @@ This module allows you to manage your Purchase Requisition. =========================================================== -When a purchase order is created, you now have the opportunity to save the related requisition. -This new object will regroup and will allow you to easily keep track and order all your purchase orders. +When a purchase order is created, you now have the opportunity to save the +related requisition. This new object will regroup and will allow you to easily +keep track and order all your purchase orders. """, "depends" : ["purchase","mrp"], "init_xml" : [], diff --git a/addons/report_intrastat/__openerp__.py b/addons/report_intrastat/__openerp__.py index 1704d436042..8d980c51f4f 100644 --- a/addons/report_intrastat/__openerp__.py +++ b/addons/report_intrastat/__openerp__.py @@ -28,7 +28,8 @@ A module that adds intrastat reports. ===================================== -This module gives the details of the goods traded between the countries of European Union """, +This module gives the details of the goods traded between the countries of +European Union.""", 'author': 'OpenERP SA', 'website': 'http://www.openerp.com', 'depends': ['base', 'product', 'stock', 'sale', 'purchase'], diff --git a/addons/report_webkit/__openerp__.py b/addons/report_webkit/__openerp__.py index f0bf0d1a32e..c86a2238f55 100644 --- a/addons/report_webkit/__openerp__.py +++ b/addons/report_webkit/__openerp__.py @@ -50,10 +50,8 @@ The module allows: - Margins definition - Paper size definition -... and much more - -Multiple headers and logos can be defined per company. -CSS style, header and footer body are defined per company. +Multiple headers and logos can be defined per company. CSS style, header and +footer body are defined per company. For a sample report see also the webkit_report_sample module, and this video: http://files.me.com/nbessi/06n92k.mov @@ -61,8 +59,8 @@ For a sample report see also the webkit_report_sample module, and this video: Requirements and Installation ----------------------------- This module requires the ``wkthtmltopdf`` library to render HTML documents as -PDF. Version 0.9.9 or later is necessary, and can be found at http://code.google.com/p/wkhtmltopdf/ -for Linux, Mac OS X (i386) and Windows (32bits). +PDF. Version 0.9.9 or later is necessary, and can be found at +http://code.google.com/p/wkhtmltopdf/ for Linux, Mac OS X (i386) and Windows (32bits). After installing the library on the OpenERP Server machine, you need to set the path to the ``wkthtmltopdf`` executable file on each Company. @@ -72,13 +70,13 @@ install a "static" version of the library. The default ``wkhtmltopdf`` on Ubuntu is known to have this issue. -TODO ----- +TODO: +----- - * JavaScript support activation deactivation - * Collated and book format support - * Zip return for separated PDF - * Web client WYSIWYG + * JavaScript support activation deactivation + * Collated and book format support + * Zip return for separated PDF + * Web client WYSIWYG """, "version": "0.9", From 4f72fafa9161ce97869f5d4d8d69a580e20a98c3 Mon Sep 17 00:00:00 2001 From: "Ajay Chauhan (OpenERP)" Date: Fri, 13 Jul 2012 15:22:16 +0530 Subject: [PATCH 189/349] [IMP] : Update Description for modules bzr revid: cha@tinyerp.com-20120713095216-l4xxa28z5lfhp5i1 --- addons/resource/__openerp__.py | 7 +++---- addons/sale_crm/__openerp__.py | 7 +++---- addons/sale_journal/__openerp__.py | 14 +++++++------- addons/sale_margin/__openerp__.py | 3 ++- addons/sale_mrp/__openerp__.py | 5 ++--- 5 files changed, 17 insertions(+), 19 deletions(-) diff --git a/addons/resource/__openerp__.py b/addons/resource/__openerp__.py index 71afebce932..cdec91d0496 100644 --- a/addons/resource/__openerp__.py +++ b/addons/resource/__openerp__.py @@ -29,10 +29,9 @@ Module for resource management. =============================== -A resource represent something that can be scheduled -(a developer on a task or a work center on manufacturing orders). -This module manages a resource calendar associated to every resource. -It also manages the leaves of every resource. +A resource represent something that can be scheduled (a developer on a task or a +work center on manufacturing orders). This module manages a resource calendar +associated to every resource. It also manages the leaves of every resource. """, 'author': 'OpenERP SA', diff --git a/addons/sale_crm/__openerp__.py b/addons/sale_crm/__openerp__.py index 92b4491d449..684c23aeab9 100644 --- a/addons/sale_crm/__openerp__.py +++ b/addons/sale_crm/__openerp__.py @@ -28,12 +28,11 @@ This module adds a shortcut on one or several opportunity cases in the CRM. =========================================================================== This shortcut allows you to generate a sales order based on the selected case. -If different cases are open (a list), it generates one sale order by -case. +If different cases are open (a list), it generates one sale order by case. The case is then closed and linked to the generated sales order. -We suggest you to install this module if you installed both the sale and the -crm modules. +We suggest you to install this module if you installed both the sale and the crm +modules. """, 'author': 'OpenERP SA', 'website': 'http://www.openerp.com', diff --git a/addons/sale_journal/__openerp__.py b/addons/sale_journal/__openerp__.py index c104ae19d97..11408161bf4 100644 --- a/addons/sale_journal/__openerp__.py +++ b/addons/sale_journal/__openerp__.py @@ -27,8 +27,7 @@ The sales journal modules allows you to categorise your sales and deliveries (picking lists) between different journals. ======================================================================================================================== -This module is very helpful for bigger companies that -works by departments. +This module is very helpful for bigger companies that works by departments. You can use journal for different purposes, some examples: * isolate sales of different departments @@ -37,12 +36,13 @@ You can use journal for different purposes, some examples: Journals have a responsible and evolves between different status: * draft, open, cancel, done. -Batch operations can be processed on the different journals to -confirm all sales at once, to validate or invoice packing, ... +Batch operations can be processed on the different journals to confirm all sales +at once, to validate or invoice packing. -It also supports batch invoicing methods that can be configured by partners and sales orders, examples: - * daily invoicing, - * monthly invoicing, ... +It also supports batch invoicing methods that can be configured by partners and +sales orders, examples: + * daily invoicing + * monthly invoicing Some statistics by journals are provided. """, diff --git a/addons/sale_margin/__openerp__.py b/addons/sale_margin/__openerp__.py index 623f442578a..936f5a6b350 100644 --- a/addons/sale_margin/__openerp__.py +++ b/addons/sale_margin/__openerp__.py @@ -26,7 +26,8 @@ This module adds the 'Margin' on sales order. ============================================= -This gives the profitability by calculating the difference between the Unit Price and Cost Price. +This gives the profitability by calculating the difference between the Unit +Price and Cost Price. """, "author":"OpenERP SA", "images":["images/sale_margin.jpeg"], diff --git a/addons/sale_mrp/__openerp__.py b/addons/sale_mrp/__openerp__.py index 2d7ed96cca4..d5b3d6b7849 100644 --- a/addons/sale_mrp/__openerp__.py +++ b/addons/sale_mrp/__openerp__.py @@ -28,9 +28,8 @@ This module provides facility to the user to install mrp and sales modulesat a time. ==================================================================================== -It is basically used when we want to keep track of production -orders generated from sales order. -It adds sales name and sales Reference on production order. +It is basically used when we want to keep track of production orders generated +from sales order. It adds sales name and sales Reference on production order. """, 'author': 'OpenERP SA', 'website': 'http://www.openerp.com', From 71122ae47ac248053c84464d9307de89689b88f8 Mon Sep 17 00:00:00 2001 From: "Rajesh Prajapati (OpenERP)" Date: Fri, 13 Jul 2012 15:47:51 +0530 Subject: [PATCH 190/349] [IMP]tooltip : I have changed the tooltip of fields as suggested bzr revid: rpr@tinyerp.com-20120713101751-zokuph2bcpcmlfc5 --- addons/account/account.py | 6 +++--- addons/account/wizard/account_financial_report.py | 2 +- .../wizard/account_report_common_journal.py | 2 +- .../wizard/account_report_general_ledger.py | 2 +- .../wizard/account_report_partner_ledger.py | 2 +- .../account_analytic_analysis.py | 2 +- .../account_analytic_default.py | 14 +++++++------- addons/crm/crm.py | 2 +- addons/event_sale/event_sale.py | 2 +- addons/hr_evaluation/hr_evaluation.py | 2 +- addons/hr_holidays/hr_holidays.py | 2 +- addons/hr_payroll/hr_payroll.py | 2 +- addons/hr_recruitment/hr_recruitment.py | 4 ++-- .../hr_timesheet_invoice/hr_timesheet_invoice.py | 2 +- .../wizard/hr_timesheet_invoice_create.py | 2 +- .../wizard/l10n_be_account_vat_declaration.py | 2 +- addons/l10n_be/wizard/l10n_be_vat_intra.py | 2 +- addons/mrp/mrp.py | 6 +++--- addons/mrp_repair/mrp_repair.py | 8 ++++---- addons/product/product.py | 2 +- addons/product_margin/product_margin.py | 2 +- .../project_issue/report/project_issue_report.py | 2 +- addons/project_long_term/project_long_term.py | 2 +- addons/purchase/purchase.py | 4 ++-- addons/resource/resource.py | 2 +- addons/sale/wizard/sale_make_invoice_advance.py | 2 +- addons/stock/wizard/stock_partial_picking.py | 2 +- addons/stock_location/stock_location.py | 2 +- 28 files changed, 43 insertions(+), 43 deletions(-) diff --git a/addons/account/account.py b/addons/account/account.py index 571ea40698d..7cf84551029 100644 --- a/addons/account/account.py +++ b/addons/account/account.py @@ -101,7 +101,7 @@ class account_payment_term_line(osv.osv): 'value': fields.selection([('procent', 'Percent'), ('balance', 'Balance'), ('fixed', 'Fixed Amount')], 'Valuation', - required=True, help="""Select here the kind of valuation related to this payment term line. Note that you should have your last line with the type 'Balance' to ensure that the whole amount will be threated."""), + required=True, help="""Select here the kind of valuation related to this payment term line. Note that you should have your last line with the type 'Balance' to ensure that the whole amount will be treated."""), 'value_amount': fields.float('Amount To Pay', digits_compute=dp.get_precision('Payment Term'), help="For percent enter a ratio between 0-1."), 'days': fields.integer('Number of Days', required=True, help="Number of days to add before computation of the day of month." \ @@ -730,7 +730,7 @@ class account_journal(osv.osv): 'centralisation': fields.boolean('Centralised counterpart', help="Check this box to determine that each entry of this journal won't create a new counterpart but will share the same counterpart. This is used in fiscal year closing."), 'update_posted': fields.boolean('Allow Cancelling Entries', help="Check this box if you want to allow the cancellation the entries related to this journal or of the invoice related to this journal"), 'group_invoice_lines': fields.boolean('Group Invoice Lines', help="If this box is checked, the system will try to group the accounting lines when generating them from invoices."), - 'sequence_id': fields.many2one('ir.sequence', 'Entry Sequence', help="This field contains the informatin related to the numbering of the journal entries of this journal.", required=True), + 'sequence_id': fields.many2one('ir.sequence', 'Entry Sequence', help="This field contains the information related to the numbering of the journal entries of this journal.", required=True), 'user_id': fields.many2one('res.users', 'User', help="The user responsible for this journal"), 'groups_id': fields.many2many('res.groups', 'account_journal_group_rel', 'journal_id', 'group_id', 'Groups'), 'currency': fields.many2one('res.currency', 'Currency', help='The currency used to enter statement'), @@ -1263,7 +1263,7 @@ class account_move(osv.osv): 'period_id': fields.many2one('account.period', 'Period', required=True, states={'posted':[('readonly',True)]}), 'journal_id': fields.many2one('account.journal', 'Journal', required=True, states={'posted':[('readonly',True)]}), 'state': fields.selection([('draft','Unposted'), ('posted','Posted')], 'Status', required=True, readonly=True, - help='All manually created new journal entries are usually in the state \'Unposted\', but you can set the option to skip that state on the related journal. In that case, they will be behave as journal entries automatically created by the system on document validation (invoices, bank statements...) and will be created in \'Posted\' state.'), + help='All manually created new journal entries are usually in the state \'Unposted\', but you can set the option to skip that state on the related journal. In that case, they will behave as journal entries automatically created by the system on document validation (invoices, bank statements...) and will be created in \'Posted\' state.'), 'line_id': fields.one2many('account.move.line', 'move_id', 'Entries', states={'posted':[('readonly',True)]}), 'to_check': fields.boolean('To Review', help='Check this box if you are unsure of that journal entry and if you want to note it as \'to be reviewed\' by an accounting expert.'), 'partner_id': fields.related('line_id', 'partner_id', type="many2one", relation="res.partner", string="Partner", store=True), diff --git a/addons/account/wizard/account_financial_report.py b/addons/account/wizard/account_financial_report.py index 0ddc50f4859..f96127f6375 100644 --- a/addons/account/wizard/account_financial_report.py +++ b/addons/account/wizard/account_financial_report.py @@ -36,7 +36,7 @@ class accounting_report(osv.osv_memory): 'period_to_cmp': fields.many2one('account.period', 'End Period'), 'date_from_cmp': fields.date("Start Date"), 'date_to_cmp': fields.date("End Date"), - 'debit_credit': fields.boolean('Display Debit/Credit Columns', help="This option allow you to get more details about your the way your balances are computed. Because it is space consumming, we do not allow to use it while doing a comparison"), + 'debit_credit': fields.boolean('Display Debit/Credit Columns', help="This option allows you to get more details about the way your balances are computed. Because it is space consuming, we do not allow to use it while doing a comparison."), } def _get_account_report(self, cr, uid, context=None): diff --git a/addons/account/wizard/account_report_common_journal.py b/addons/account/wizard/account_report_common_journal.py index 92076cfe572..ed0f03df5b5 100644 --- a/addons/account/wizard/account_report_common_journal.py +++ b/addons/account/wizard/account_report_common_journal.py @@ -26,7 +26,7 @@ class account_common_journal_report(osv.osv_memory): _description = 'Account Common Journal Report' _inherit = "account.common.report" _columns = { - 'amount_currency': fields.boolean("With Currency", help="Print Report with the currency column if the currency is different then the company currency"), + 'amount_currency': fields.boolean("With Currency", help="Print Report with the currency column if the currency differs from the company currency."), } def _build_contexts(self, cr, uid, ids, data, context=None): diff --git a/addons/account/wizard/account_report_general_ledger.py b/addons/account/wizard/account_report_general_ledger.py index d0b3c0fa3d3..8078da372ca 100644 --- a/addons/account/wizard/account_report_general_ledger.py +++ b/addons/account/wizard/account_report_general_ledger.py @@ -30,7 +30,7 @@ class account_report_general_ledger(osv.osv_memory): 'landscape': fields.boolean("Landscape Mode"), 'initial_balance': fields.boolean('Include Initial Balances', help='If you selected to filter by date or period, this field allow you to add a row to display the amount of debit/credit/balance that precedes the filter you\'ve set.'), - 'amount_currency': fields.boolean("With Currency", help="It adds the currency column if the currency is different then the company currency"), + 'amount_currency': fields.boolean("With Currency", help="It adds the currency column on report if the currency differs from the company currency."), 'sortby': fields.selection([('sort_date', 'Date'), ('sort_journal_partner', 'Journal & Partner')], 'Sort by', required=True), 'journal_ids': fields.many2many('account.journal', 'account_report_general_ledger_journal_rel', 'account_id', 'journal_id', 'Journals', required=True), } diff --git a/addons/account/wizard/account_report_partner_ledger.py b/addons/account/wizard/account_report_partner_ledger.py index 7a3f3932f1b..60ac20a42ed 100644 --- a/addons/account/wizard/account_report_partner_ledger.py +++ b/addons/account/wizard/account_report_partner_ledger.py @@ -34,7 +34,7 @@ class account_partner_ledger(osv.osv_memory): help='If you selected to filter by date or period, this field allow you to add a row to display the amount of debit/credit/balance that precedes the filter you\'ve set.'), 'filter': fields.selection([('filter_no', 'No Filters'), ('filter_date', 'Date'), ('filter_period', 'Periods'), ('unreconciled', 'Unreconciled Entries')], "Filter by", required=True), 'page_split': fields.boolean('One Partner Per Page', help='Display Ledger Report with One partner per page'), - 'amount_currency': fields.boolean("With Currency", help="It adds the currency column if the currency is different then the company currency"), + 'amount_currency': fields.boolean("With Currency", help="It adds the currency column on report if the currency differs from the company currency."), 'journal_ids': fields.many2many('account.journal', 'account_partner_ledger_journal_rel', 'account_id', 'journal_id', 'Journals', required=True), } _defaults = { diff --git a/addons/account_analytic_analysis/account_analytic_analysis.py b/addons/account_analytic_analysis/account_analytic_analysis.py index 6e15fe1d5a5..93718a75211 100644 --- a/addons/account_analytic_analysis/account_analytic_analysis.py +++ b/addons/account_analytic_analysis/account_analytic_analysis.py @@ -446,7 +446,7 @@ class account_analytic_account(osv.osv): help="Computed using the formula: Invoiced Amount - Total Costs.", digits_compute=dp.get_precision('Account')), 'theorical_margin': fields.function(_theorical_margin_calc, type='float', string='Theoretical Margin', - help="Computed using the formula: Theorial Revenue - Total Costs", + help="Computed using the formula: Theoretical Revenue - Total Costs", digits_compute=dp.get_precision('Account')), 'real_margin_rate': fields.function(_real_margin_rate_calc, type='float', string='Real Margin Rate (%)', help="Computes using the formula: (Real Margin / Total Costs) * 100.", diff --git a/addons/account_analytic_default/account_analytic_default.py b/addons/account_analytic_default/account_analytic_default.py index 0f868f91d34..affc514e203 100644 --- a/addons/account_analytic_default/account_analytic_default.py +++ b/addons/account_analytic_default/account_analytic_default.py @@ -30,13 +30,13 @@ class account_analytic_default(osv.osv): _order = "sequence" _columns = { 'sequence': fields.integer('Sequence', help="Gives the sequence order when displaying a list of analytic distribution"), - 'analytic_id': fields.many2one('account.analytic.account', 'Analytic Account' , help="Analytical Account"), - 'product_id': fields.many2one('product.product', 'Product', ondelete='cascade', help="select a product which will use analytical account specified in analytic default (eg. create new cutomer invoice or Sale order if we select this product, it will automatically take this as an analytical account)"), - 'partner_id': fields.many2one('res.partner', 'Partner', ondelete='cascade', help="select a partner which will use analytical account specified in analytic default (eg. create new cutomer invoice or Sale order if we select this partner, it will automatically take this as an analytical account)"), - 'user_id': fields.many2one('res.users', 'User', ondelete='cascade', help="select a user which will use analytical account specified in analytic default"), - 'company_id': fields.many2one('res.company', 'Company', ondelete='cascade', help="select a company which will use analytical account specified in analytic default (eg. create new cutomer invoice or Sale order if we select this company, it will automatically take this as an analytical account)"), - 'date_start': fields.date('Start Date', help="Default start date for this Analytical Account"), - 'date_stop': fields.date('End Date', help="Default end date for this Analytical Account"), + 'analytic_id': fields.many2one('account.analytic.account', 'Analytic Account'), + 'product_id': fields.many2one('product.product', 'Product', ondelete='cascade', help="Select a product which will use analytic account specified in analytic default (eg. create new customer invoice or Sale order if we select this product, it will automatically take this as an analytic account)"), + 'partner_id': fields.many2one('res.partner', 'Partner', ondelete='cascade', help="Select a partner which will use analytic account specified in analytic default (eg. create new customer invoice or Sale order if we select this partner, it will automatically take this as an analytic account)"), + 'user_id': fields.many2one('res.users', 'User', ondelete='cascade', help="Select a user which will use analytic account specified in analytic default."), + 'company_id': fields.many2one('res.company', 'Company', ondelete='cascade', help="Select a company which will use analytic account specified in analytic default (eg. create new customer invoice or Sale order if we select this company, it will automatically take this as an analytic account)"), + 'date_start': fields.date('Start Date', help="Default start date for this Analytic Account."), + 'date_stop': fields.date('End Date', help="Default end date for this Analytic Account."), } def account_get(self, cr, uid, product_id=None, partner_id=None, user_id=None, date=None, context=None): diff --git a/addons/crm/crm.py b/addons/crm/crm.py index 65af3f9e530..6778f0bbe87 100644 --- a/addons/crm/crm.py +++ b/addons/crm/crm.py @@ -110,7 +110,7 @@ class crm_case_section(osv.osv): 'active': fields.boolean('Active', help="If the active field is set to "\ "true, it will allow you to hide the sales team without removing it."), 'allow_unlink': fields.boolean('Allow Delete', help="Allows to delete non draft cases"), - 'change_responsible': fields.boolean('Reassign Escalated', help="When escalating to this team override the saleman with the team leader."), + 'change_responsible': fields.boolean('Reassign Escalated', help="When escalating to this team override the salesman with the team leader."), 'user_id': fields.many2one('res.users', 'Team Leader'), 'member_ids':fields.many2many('res.users', 'sale_member_rel', 'section_id', 'member_id', 'Team Members'), 'reply_to': fields.char('Reply-To', size=64, help="The email address put in the 'Reply-To' of all emails sent by OpenERP about cases in this sales team"), diff --git a/addons/event_sale/event_sale.py b/addons/event_sale/event_sale.py index 9e65a034544..681116d064e 100644 --- a/addons/event_sale/event_sale.py +++ b/addons/event_sale/event_sale.py @@ -37,7 +37,7 @@ product() class sale_order_line(osv.osv): _inherit = 'sale.order.line' _columns = { - 'event_id': fields.many2one('event.event', 'Event', help="Choose an event and it will authomaticaly create a registration for this event"), + 'event_id': fields.many2one('event.event', 'Event', help="Choose an event and it will automatically create a registration for this event."), #those 2 fields are used for dynamic domains and filled by onchange 'event_type_id': fields.related('event_type_id', type='many2one', relation="event.type", string="Event Type"), 'event_ok': fields.related('event_ok', string='event_ok', type='boolean'), diff --git a/addons/hr_evaluation/hr_evaluation.py b/addons/hr_evaluation/hr_evaluation.py index e85f0274d84..5180050ddb9 100644 --- a/addons/hr_evaluation/hr_evaluation.py +++ b/addons/hr_evaluation/hr_evaluation.py @@ -156,7 +156,7 @@ class hr_evaluation(osv.osv): ('2','Meet expectations'), ('3','Exceeds expectations'), ('4','Significantly exceeds expectations'), - ], "Appreciation", help="This is the appreciation on that summarize the evaluation"), + ], "Appreciation", help="This is the appreciation on which the evaluation is summarized."), 'survey_request_ids': fields.one2many('hr.evaluation.interview','evaluation_id','Appraisal Forms'), 'plan_id': fields.many2one('hr_evaluation.plan', 'Plan', required=True), 'state': fields.selection([ diff --git a/addons/hr_holidays/hr_holidays.py b/addons/hr_holidays/hr_holidays.py index 04fe67b94f7..73e10ead40c 100644 --- a/addons/hr_holidays/hr_holidays.py +++ b/addons/hr_holidays/hr_holidays.py @@ -76,7 +76,7 @@ class hr_holidays_status(osv.osv): 'name': fields.char('Leave Type', size=64, required=True, translate=True), 'categ_id': fields.many2one('crm.meeting.type', 'Meeting Type', help='Once a leave is validated, OpenERP will create a corresponding meeting of this type in the calendar.'), - 'color_name': fields.selection([('red', 'Red'),('blue','Blue'), ('lightgreen', 'Light Green'), ('lightblue','Light Blue'), ('lightyellow', 'Light Yellow'), ('magenta', 'Magenta'),('lightcyan', 'Light Cyan'),('black', 'Black'),('lightpink', 'Light Pink'),('brown', 'Brown'),('violet', 'Violet'),('lightcoral', 'Light Coral'),('lightsalmon', 'Light Salmon'),('lavender', 'Lavender'),('wheat', 'Wheat'),('ivory', 'Ivory')],'Color in Report', required=True, help='This color will be used in the leaves summary located in Reporting\Leaves by Departement'), + 'color_name': fields.selection([('red', 'Red'),('blue','Blue'), ('lightgreen', 'Light Green'), ('lightblue','Light Blue'), ('lightyellow', 'Light Yellow'), ('magenta', 'Magenta'),('lightcyan', 'Light Cyan'),('black', 'Black'),('lightpink', 'Light Pink'),('brown', 'Brown'),('violet', 'Violet'),('lightcoral', 'Light Coral'),('lightsalmon', 'Light Salmon'),('lavender', 'Lavender'),('wheat', 'Wheat'),('ivory', 'Ivory')],'Color in Report', required=True, help='This color will be used in the leaves summary located in Reporting\Leaves by Department.'), 'limit': fields.boolean('Allow to Override Limit', help='If you select this checkbox, the system allows the employees to take more leaves than the available ones for this type.'), 'active': fields.boolean('Active', help="If the active field is set to false, it will allow you to hide the leave type without removing it."), 'max_leaves': fields.function(_user_left_days, string='Maximum Allowed', help='This value is given by the sum of all holidays requests with a positive value.', multi='user_left_days'), diff --git a/addons/hr_payroll/hr_payroll.py b/addons/hr_payroll/hr_payroll.py index 676eedf4ebc..a8bafe43685 100644 --- a/addons/hr_payroll/hr_payroll.py +++ b/addons/hr_payroll/hr_payroll.py @@ -769,7 +769,7 @@ class hr_salary_rule(osv.osv): 'quantity': fields.char('Quantity', size=256, help="It is used in computation for percentage and fixed amount.For e.g. A rule for Meal Voucher having fixed amount of 1€ per worked day can have its quantity defined in expression like worked_days.WORK100.number_of_days."), 'category_id':fields.many2one('hr.salary.rule.category', 'Category', required=True), 'active':fields.boolean('Active', help="If the active field is set to false, it will allow you to hide the salary rule without removing it."), - 'appears_on_payslip': fields.boolean('Appears on Payslip', help="Used for the display of rule on payslip"), + 'appears_on_payslip': fields.boolean('Appears on Payslip', help="Used to display the salary rule on payslip."), 'parent_rule_id':fields.many2one('hr.salary.rule', 'Parent Salary Rule', select=True), 'company_id':fields.many2one('res.company', 'Company', required=False), 'condition_select': fields.selection([('none', 'Always True'),('range', 'Range'), ('python', 'Python Expression')], "Condition Based on", required=True), diff --git a/addons/hr_recruitment/hr_recruitment.py b/addons/hr_recruitment/hr_recruitment.py index a3cd2f3a629..40b7bbb62f1 100644 --- a/addons/hr_recruitment/hr_recruitment.py +++ b/addons/hr_recruitment/hr_recruitment.py @@ -62,8 +62,8 @@ class hr_recruitment_stage(osv.osv): _columns = { 'name': fields.char('Name', size=64, required=True, translate=True), 'sequence': fields.integer('Sequence', help="Gives the sequence order when displaying a list of stages."), - 'department_id':fields.many2one('hr.department', 'Specific to a Department', help="Stages of the recruitment process may be different per department. If this stage is common to all departments, keep tempy this field."), - 'state': fields.selection(AVAILABLE_STATES, 'State', required=True, help="The related state for the stage. The state of your document will automatically change regarding the selected stage. Example, a stage is related to the state 'Close', when your document reach this stage, it will be automatically closed."), + 'department_id':fields.many2one('hr.department', 'Specific to a Department', help="Stages of the recruitment process may be different per department. If this stage is common to all departments, keep this field empty."), + 'state': fields.selection(AVAILABLE_STATES, 'State', required=True, help="The related state for the stage. The state of your document will automatically change according to the selected stage. Example, a stage is related to the state 'Close', when your document reach this stage, it will be automatically closed."), 'fold': fields.boolean('Hide in views if empty', help="This stage is not visible, for example in status bar or kanban view, when there are no records in that stage to display."), 'requirements': fields.text('Requirements'), } diff --git a/addons/hr_timesheet_invoice/hr_timesheet_invoice.py b/addons/hr_timesheet_invoice/hr_timesheet_invoice.py index f1138d7b246..54257f5efba 100644 --- a/addons/hr_timesheet_invoice/hr_timesheet_invoice.py +++ b/addons/hr_timesheet_invoice/hr_timesheet_invoice.py @@ -64,7 +64,7 @@ class account_analytic_account(osv.osv): _inherit = "account.analytic.account" _columns = { 'pricelist_id': fields.many2one('product.pricelist', 'Pricelist', - help="The product to invoice is defined on the employee form, the price will be deduced by this pricelist on the product."), + help="The product to invoice is defined on the employee form, the price will be deducted by this pricelist on the product."), 'amount_max': fields.float('Max. Invoice Price', help="Keep empty if this contract is not limited to a total fixed price."), 'amount_invoiced': fields.function(_invoiced_calc, string='Invoiced Amount', diff --git a/addons/hr_timesheet_invoice/wizard/hr_timesheet_invoice_create.py b/addons/hr_timesheet_invoice/wizard/hr_timesheet_invoice_create.py index bcae996a8ee..2cd8961a9b7 100644 --- a/addons/hr_timesheet_invoice/wizard/hr_timesheet_invoice_create.py +++ b/addons/hr_timesheet_invoice/wizard/hr_timesheet_invoice_create.py @@ -179,7 +179,7 @@ class hr_timesheet_invoice_create(osv.osv_memory): 'time': fields.boolean('Time spent', help='The time of each work done will be displayed on the invoice'), 'name': fields.boolean('Description', help='The detail of each work done will be displayed on the invoice'), 'price': fields.boolean('Cost', help='The cost of each work done will be displayed on the invoice. You probably don\'t want to check this'), - 'product': fields.many2one('product.product', 'Product', help='Complete this field only if you want to force to use a specific product. Keep empty to use the real product that comes from the cost.'), + 'product': fields.many2one('product.product', 'Product', help='Fill this field only if you want to force to use a specific product. Keep empty to use the real product that comes from the cost.'), } _defaults = { diff --git a/addons/l10n_be/wizard/l10n_be_account_vat_declaration.py b/addons/l10n_be/wizard/l10n_be_account_vat_declaration.py index eed2a537f62..95978ac52e7 100644 --- a/addons/l10n_be/wizard/l10n_be_account_vat_declaration.py +++ b/addons/l10n_be/wizard/l10n_be_account_vat_declaration.py @@ -45,7 +45,7 @@ class l10n_be_vat_declaration(osv.osv_memory): 'tax_code_id': fields.many2one('account.tax.code', 'Tax Code', domain=[('parent_id', '=', False)], required=True), 'msg': fields.text('File created', size=64, readonly=True), 'file_save': fields.binary('Save File'), - 'ask_restitution': fields.boolean('Ask Restitution',help='It indicates whether a resitution is to made or not?'), + 'ask_restitution': fields.boolean('Ask Restitution',help='It indicates whether a restitution is to made or not?'), 'ask_payment': fields.boolean('Ask Payment',help='It indicates whether a payment is to made or not?'), 'client_nihil': fields.boolean('Last Declaration, no clients in client listing', help='Tick this case only if it concerns only the last statement on the civil or cessation of activity: ' \ 'no clients to be included in the client listing.'), diff --git a/addons/l10n_be/wizard/l10n_be_vat_intra.py b/addons/l10n_be/wizard/l10n_be_vat_intra.py index 123d235f19b..2bfc4de6bad 100644 --- a/addons/l10n_be/wizard/l10n_be_vat_intra.py +++ b/addons/l10n_be/wizard/l10n_be_vat_intra.py @@ -60,7 +60,7 @@ class partner_vat_intra(osv.osv_memory): 'test_xml': fields.boolean('Test XML file', help="Sets the XML output as test file"), 'mand_id' : fields.char('Reference', size=14, help="Reference given by the Representative of the sending company."), 'msg': fields.text('File created', size=14, readonly=True), - 'no_vat': fields.text('Partner With No VAT', size=14, readonly=True, help="The Partner whose VAT number is not defined they doesn't include in XML File."), + 'no_vat': fields.text('Partner With No VAT', size=14, readonly=True, help="The Partner whose VAT number is not defined and they are not included in XML File."), 'file_save' : fields.binary('Save File', readonly=True), 'country_ids': fields.many2many('res.country', 'vat_country_rel', 'vat_id', 'country_id', 'European Countries'), 'comments': fields.text('Comments'), diff --git a/addons/mrp/mrp.py b/addons/mrp/mrp.py index c4a4d8df895..b0186938864 100644 --- a/addons/mrp/mrp.py +++ b/addons/mrp/mrp.py @@ -48,14 +48,14 @@ class mrp_workcenter(osv.osv): 'time_stop': fields.float('Time after prod.', help="Time in hours for the cleaning."), 'costs_hour': fields.float('Cost per hour', help="Specify Cost of Work Center per hour."), 'costs_hour_account_id': fields.many2one('account.analytic.account', 'Hour Account', domain=[('type','<>','view')], - help="Complete this only if you want automatic analytic accounting entries on production orders."), + help="Fill this only if you want automatic analytic accounting entries on production orders."), 'costs_cycle': fields.float('Cost per cycle', help="Specify Cost of Work Center per cycle."), 'costs_cycle_account_id': fields.many2one('account.analytic.account', 'Cycle Account', domain=[('type','<>','view')], - help="Complete this only if you want automatic analytic accounting entries on production orders."), + help="Fill this only if you want automatic analytic accounting entries on production orders."), 'costs_journal_id': fields.many2one('account.analytic.journal', 'Analytic Journal'), 'costs_general_account_id': fields.many2one('account.account', 'General Account', domain=[('type','<>','view')]), 'resource_id': fields.many2one('resource.resource','Resource', ondelete='cascade', required=True), - 'product_id': fields.many2one('product.product','Work Center Product', help="Fill this product to track easily your production costs in the analytic accounting."), + 'product_id': fields.many2one('product.product','Work Center Product', help="Fill this product to easily track your production costs in the analytic accounting."), } _defaults = { 'capacity_per_cycle': 1.0, diff --git a/addons/mrp_repair/mrp_repair.py b/addons/mrp_repair/mrp_repair.py index 6f14ba22bea..fc898dbf419 100644 --- a/addons/mrp_repair/mrp_repair.py +++ b/addons/mrp_repair/mrp_repair.py @@ -116,7 +116,7 @@ class mrp_repair(osv.osv): _columns = { 'name': fields.char('Repair Reference',size=24, required=True), 'product_id': fields.many2one('product.product', string='Product to Repair', required=True, readonly=True, states={'draft':[('readonly',False)]}), - 'partner_id' : fields.many2one('res.partner', 'Partner', select=True, help='This field allow you to choose the parner that will be invoiced and delivered'), + 'partner_id' : fields.many2one('res.partner', 'Partner', select=True, help='Choose partner for whom the order will be invoiced and delivered.'), 'address_id': fields.many2one('res.partner', 'Delivery Address', domain="[('parent_id','=',partner_id)]"), 'default_address_id': fields.function(_get_default_address, type="many2one", relation="res.partner"), 'prodlot_id': fields.many2one('stock.production.lot', 'Lot Number', select=True, domain="[('product_id','=',product_id)]"), @@ -141,21 +141,21 @@ class mrp_repair(osv.osv): 'move_id': fields.many2one('stock.move', 'Move',required=True, domain="[('product_id','=',product_id)]", readonly=True, states={'draft':[('readonly',False)]}), 'guarantee_limit': fields.date('Guarantee limit', help="The guarantee limit is computed as: last move date + warranty defined on selected product. If the current date is below the guarantee limit, each operation and fee you will add will be set as 'not to invoiced' by default. Note that you can change manually afterwards."), 'operations' : fields.one2many('mrp.repair.line', 'repair_id', 'Operation Lines', readonly=True, states={'draft':[('readonly',False)]}), - 'pricelist_id': fields.many2one('product.pricelist', 'Pricelist', help='The pricelist comes from the selected partner, by default.'), + 'pricelist_id': fields.many2one('product.pricelist', 'Pricelist', help='Pricelist of the selected partner.'), 'partner_invoice_id':fields.many2one('res.partner', 'Invoicing Address'), 'invoice_method':fields.selection([ ("none","No Invoice"), ("b4repair","Before Repair"), ("after_repair","After Repair") ], "Invoice Method", - select=True, required=True, states={'draft':[('readonly',False)]}, readonly=True, help='This field allow you to change the workflow of the repair order. If value selected is different from \'No Invoice\', it also allow you to select the pricelist and invoicing address.'), + select=True, required=True, states={'draft':[('readonly',False)]}, readonly=True, help='Selecting \'Before Repair\' or \'After Repair\' will allow you to generate invoice before or after the repair is done respectively. \'No invoice\' means you don\'t want to generate invoice for this repair order.'), 'invoice_id': fields.many2one('account.invoice', 'Invoice', readonly=True), 'picking_id': fields.many2one('stock.picking', 'Picking',readonly=True), 'fees_lines': fields.one2many('mrp.repair.fee', 'repair_id', 'Fees Lines', readonly=True, states={'draft':[('readonly',False)]}), 'internal_notes': fields.text('Internal Notes'), 'quotation_notes': fields.text('Quotation Notes'), 'company_id': fields.many2one('res.company', 'Company'), - 'deliver_bool': fields.boolean('Deliver', help="Check this box if you want to manage the delivery once the product is repaired. If cheked, it will create a picking with selected product. Note that you can select the locations in the Info tab, if you have the extended view."), + 'deliver_bool': fields.boolean('Deliver', help="Check this box if you want to manage the delivery once the product is repaired and create a picking with selected product. Note that you can select the locations in the Info tab, if you have the extended view."), 'invoiced': fields.boolean('Invoiced', readonly=True), 'repaired': fields.boolean('Repaired', readonly=True), 'amount_untaxed': fields.function(_amount_untaxed, string='Untaxed Amount', diff --git a/addons/product/product.py b/addons/product/product.py index 3cbff880cf9..7a2a10af8d3 100644 --- a/addons/product/product.py +++ b/addons/product/product.py @@ -286,7 +286,7 @@ class product_template(osv.osv): _columns = { 'name': fields.char('Name', size=128, required=True, translate=True, select=True), - 'product_manager': fields.many2one('res.users','Product Manager',help="This is use as task responsible"), + 'product_manager': fields.many2one('res.users','Product Manager',help="Responsible for product."), 'description': fields.text('Description',translate=True), 'description_purchase': fields.text('Purchase Description',translate=True), 'description_sale': fields.text('Sale Description',translate=True), diff --git a/addons/product_margin/product_margin.py b/addons/product_margin/product_margin.py index 5895feedf3f..8f946467384 100644 --- a/addons/product_margin/product_margin.py +++ b/addons/product_margin/product_margin.py @@ -98,7 +98,7 @@ class product_product(osv.osv): ('paid','Paid'),('open_paid','Open and Paid'),('draft_open_paid','Draft, Open and Paid') ], string='Invoice State',multi='product_margin', readonly=True), 'sale_avg_price' : fields.function(_product_margin, type='float', string='Avg. Unit Price', multi='product_margin', - help="Avg. Price in Customer Invoices)"), + help="Avg. Price in Customer Invoices."), 'purchase_avg_price' : fields.function(_product_margin, type='float', string='Avg. Unit Price', multi='product_margin', help="Avg. Price in Supplier Invoices "), 'sale_num_invoiced' : fields.function(_product_margin, type='float', string='# Invoiced', multi='product_margin', diff --git a/addons/project_issue/report/project_issue_report.py b/addons/project_issue/report/project_issue_report.py index be3309d7175..5957ee284e8 100644 --- a/addons/project_issue/report/project_issue_report.py +++ b/addons/project_issue/report/project_issue_report.py @@ -56,7 +56,7 @@ class project_issue_report(osv.osv): 'working_hours_open': fields.float('Avg. Working Hours to Open', readonly=True), 'working_hours_close': fields.float('Avg. Working Hours to Close', readonly=True), 'delay_open': fields.float('Avg. Delay to Open', digits=(16,2), readonly=True, group_operator="avg", - help="Number of Days to close the project issue"), + help="Number of Days to open the project issue."), 'delay_close': fields.float('Avg. Delay to Close', digits=(16,2), readonly=True, group_operator="avg", help="Number of Days to close the project issue"), 'company_id' : fields.many2one('res.company', 'Company'), diff --git a/addons/project_long_term/project_long_term.py b/addons/project_long_term/project_long_term.py index a4df1eb6917..7604d43af1b 100644 --- a/addons/project_long_term/project_long_term.py +++ b/addons/project_long_term/project_long_term.py @@ -114,7 +114,7 @@ class project_phase(osv.osv): 'task_ids': fields.one2many('project.task', 'phase_id', "Project Tasks", states={'done':[('readonly',True)], 'cancelled':[('readonly',True)]}), 'user_force_ids': fields.many2many('res.users', string='Force Assigned Users'), 'user_ids': fields.one2many('project.user.allocation', 'phase_id', "Assigned Users",states={'done':[('readonly',True)], 'cancelled':[('readonly',True)]}, - help="The ressources on the project can be computed automatically by the scheduler"), + help="The resources on the project can be computed automatically by the scheduler."), 'state': fields.selection([('draft', 'New'), ('cancelled', 'Cancelled'),('open', 'In Progress'), ('pending', 'Pending'), ('done', 'Done')], 'Status', readonly=True, required=True, help='If the phase is created the state \'Draft\'.\n If the phase is started, the state becomes \'In Progress\'.\n If review is needed the phase is in \'Pending\' state.\ \n If the phase is over, the states is set to \'Done\'.'), diff --git a/addons/purchase/purchase.py b/addons/purchase/purchase.py index e74ca83a92b..b465ab9b5e6 100644 --- a/addons/purchase/purchase.py +++ b/addons/purchase/purchase.py @@ -154,7 +154,7 @@ class purchase_order(osv.osv): ] _columns = { - 'name': fields.char('Order Reference', size=64, required=True, select=True, help="unique number of the purchase order,computed automatically when the purchase order is created"), + 'name': fields.char('Order Reference', size=64, required=True, select=True, help="Unique number of the purchase order, computed automatically when the purchase order is created."), 'origin': fields.char('Source Document', size=64, help="Reference of the document that generated this purchase order request." ), @@ -175,7 +175,7 @@ class purchase_order(osv.osv): 'validator' : fields.many2one('res.users', 'Validated by', readonly=True), 'notes': fields.text('Terms and Conditions'), 'invoice_ids': fields.many2many('account.invoice', 'purchase_invoice_rel', 'purchase_id', 'invoice_id', 'Invoices', help="Invoices generated for a purchase order"), - 'picking_ids': fields.one2many('stock.picking.in', 'purchase_id', 'Picking List', readonly=True, help="This is the list of incomming shipments that have been generated for this purchase order."), + 'picking_ids': fields.one2many('stock.picking.in', 'purchase_id', 'Picking List', readonly=True, help="This is the list of incoming shipments that have been generated for this purchase order."), 'shipped':fields.boolean('Received', readonly=True, select=True, help="It indicates that a picking has been done"), 'shipped_rate': fields.function(_shipped_rate, string='Received', type='float'), 'invoiced': fields.function(_invoiced, string='Invoice Received', type='boolean', help="It indicates that an invoice has been paid"), diff --git a/addons/resource/resource.py b/addons/resource/resource.py index 5fed5b96218..354e9c5b27c 100644 --- a/addons/resource/resource.py +++ b/addons/resource/resource.py @@ -292,7 +292,7 @@ class resource_resource(osv.osv): 'company_id' : fields.many2one('res.company', 'Company'), 'resource_type': fields.selection([('user','Human'),('material','Material')], 'Resource Type', required=True), 'user_id' : fields.many2one('res.users', 'User', help='Related user name for the resource to manage its access.'), - 'time_efficiency' : fields.float('Efficiency Factor', size=8, required=True, help="This field depict the efficiency of the resource to complete tasks. e.g resource put alone on a phase of 5 days with 5 tasks assigned to him, will show a load of 100% for this phase by default, but if we put a efficency of 200%, then his load will only be 50%."), + 'time_efficiency' : fields.float('Efficiency Factor', size=8, required=True, help="This field depict the efficiency of the resource to complete tasks. e.g resource put alone on a phase of 5 days with 5 tasks assigned to him, will show a load of 100% for this phase by default, but if we put a efficiency of 200%, then his load will only be 50%."), 'calendar_id' : fields.many2one("resource.calendar", "Working Time", help="Define the schedule of resource"), } _defaults = { diff --git a/addons/sale/wizard/sale_make_invoice_advance.py b/addons/sale/wizard/sale_make_invoice_advance.py index f3d9bd65a91..08f67106870 100644 --- a/addons/sale/wizard/sale_make_invoice_advance.py +++ b/addons/sale/wizard/sale_make_invoice_advance.py @@ -38,7 +38,7 @@ class sale_advance_payment_inv(osv.osv_memory): 'product_id': fields.many2one('product.product', 'Advance Product', help="Select a product of type service which is called 'Advance Product'. You may have to create it and set it as a default value on this field."), 'amount': fields.float('Advance Amount', digits_compute= dp.get_precision('Sale Price'), required=True, help="The amount to be invoiced in advance."), 'qtty': fields.float('Quantity', digits=(16, 2), required=True), - 'advance_payment_method':fields.selection([('percentage','Percentage'), ('fixed','Fixed Price')], 'Type', required=True, help="Use Fixed Price if you want to give specific amound in Advance, Use Percentage if you want to give percentage of Total Invoice Amount."), + 'advance_payment_method':fields.selection([('percentage','Percentage'), ('fixed','Fixed Price')], 'Type', required=True, help="Use Fixed Price if you want to give specific amount in Advance. Use Percentage if you want to give percentage of Total Invoice Amount."), } _defaults = { diff --git a/addons/stock/wizard/stock_partial_picking.py b/addons/stock/wizard/stock_partial_picking.py index dd91f20e8cf..ce0efff280d 100644 --- a/addons/stock/wizard/stock_partial_picking.py +++ b/addons/stock/wizard/stock_partial_picking.py @@ -70,7 +70,7 @@ class stock_partial_picking(osv.osv_memory): 'date': fields.datetime('Date', required=True), 'move_ids' : fields.one2many('stock.partial.picking.line', 'wizard_id', 'Product Moves'), 'picking_id': fields.many2one('stock.picking', 'Picking', required=True, ondelete='CASCADE'), - 'hide_tracking': fields.function(_hide_tracking, string='Tracking', type='boolean', help='This field is for internal purpose. It is used to decide if the column prodlot has to be shown on the move_ids field or not'), + 'hide_tracking': fields.function(_hide_tracking, string='Tracking', type='boolean', help='This field is for internal purpose. It is used to decide if the column production lot has to be shown on the moves or not.'), } def fields_view_get(self, cr, uid, view_id=None, view_type='form', context=None, toolbar=False, submenu=False): diff --git a/addons/stock_location/stock_location.py b/addons/stock_location/stock_location.py index de4e2e7f561..d025bc9252d 100644 --- a/addons/stock_location/stock_location.py +++ b/addons/stock_location/stock_location.py @@ -67,7 +67,7 @@ class product_pulled_flow(osv.osv): 'journal_id': fields.many2one('stock.journal','Journal'), 'procure_method': fields.selection([('make_to_stock','Make to Stock'),('make_to_order','Make to Order')], 'Procure Method', required=True, help="'Make to Stock': When needed, take from the stock or wait until re-supplying. 'Make to Order': When needed, purchase or produce for the procurement request."), 'type_proc': fields.selection([('produce','Produce'),('buy','Buy'),('move','Move')], 'Type of Procurement', required=True), - 'company_id': fields.many2one('res.company', 'Company', help="Is used to know to which company belong packings and moves"), + 'company_id': fields.many2one('res.company', 'Company', help="Is used to know to which company the pickings and moves belong."), 'partner_address_id': fields.many2one('res.partner', 'Partner Address'), 'picking_type': fields.selection([('out','Sending Goods'),('in','Getting Goods'),('internal','Internal')], 'Shipping Type', required=True, select=True, help="Depending on the company, choose whatever you want to receive or send products"), 'product_id':fields.many2one('product.product','Product'), From 7c7d94f0025256ca541b041f35109c5305c41f15 Mon Sep 17 00:00:00 2001 From: "Jiten (OpenERP)" Date: Fri, 13 Jul 2012 15:47:53 +0530 Subject: [PATCH 191/349] [IMP] Improve bounce effect to remove auto scroll and remove useless code. bzr revid: jra@tinyerp.com-20120713101753-95dnac5u3cm3mwhn --- addons/web/static/src/js/corelib.js | 1 - addons/web/static/src/js/view_form.js | 29 +++++---------------- addons/web/static/src/xml/base.xml | 2 +- addons/web_kanban/static/src/css/kanban.css | 1 + addons/web_kanban/static/src/js/kanban.js | 5 +--- 5 files changed, 10 insertions(+), 28 deletions(-) diff --git a/addons/web/static/src/js/corelib.js b/addons/web/static/src/js/corelib.js index a200f272a91..03b67bce405 100644 --- a/addons/web/static/src/js/corelib.js +++ b/addons/web/static/src/js/corelib.js @@ -746,7 +746,6 @@ instance.web.Widget = instance.web.Class.extend(instance.web.WidgetMixin, { } return false; }, - rpc: function(url, data, success, error) { var def = $.Deferred().then(success, error); var self = this; diff --git a/addons/web/static/src/js/view_form.js b/addons/web/static/src/js/view_form.js index b17d05da165..b48f33f327a 100644 --- a/addons/web/static/src/js/view_form.js +++ b/addons/web/static/src/js/view_form.js @@ -284,26 +284,8 @@ instance.web.FormView = instance.web.View.extend(instance.web.form.FieldManagerM } this._super(); }, - on_wrong_click : function (){ - var self = this; - var div = $("
", {id:"bounce"}); - this.$element.find(".oe_form_field, .oe_form_group_cell").click(function (e) { - $(".oe_form_button_edit").wrap(div); - $("#bounce").addClass('oe_bounce_button_left'); - var edit_btn = $(".oe_form_button_edit"); - if (jQuery(window).scrollTop() > 75 ) { - $('body,html').animate({ scrollTop: 0 }, 200); - } - if (jQuery(window).scrollLeft() > 225 ) { - $('body,html').animate({ scrollLeft: 0 }, 200); - } - self.do_bounce(edit_btn); - e.stopImmediatePropagation(); - }); - }, on_record_loaded: function(record) { var self = this, set_values = []; - self.on_wrong_click(); if (!record) { this.do_warn("Form", "The record could not be found in the database.", true); return $.Deferred().reject(); @@ -345,7 +327,6 @@ instance.web.FormView = instance.web.View.extend(instance.web.form.FieldManagerM } self.$element.add(self.$buttons).removeClass('oe_form_dirty'); }); - }, on_form_changed: function() { this.trigger("view_content_has_changed"); @@ -581,6 +562,12 @@ instance.web.FormView = instance.web.View.extend(instance.web.form.FieldManagerM _.each(this.fields,function(field){ field.set({"force_readonly": true}); }); + var edit_btn = $(".oe_form_button_edit"); + this.$element.find(".oe_form_field, .oe_form_group_cell").click(function (e) { + edit_btn.addClass('oe_bounce_button_left'); + self.do_bounce(edit_btn); + e.stopImmediatePropagation(); + }); } else { self.$element.removeClass('oe_form_readonly').addClass('oe_form_editable'); self.$buttons.find('.oe_form_buttons_edit').show(); @@ -605,10 +592,8 @@ instance.web.FormView = instance.web.View.extend(instance.web.form.FieldManagerM var self = this; return this.do_save().then(function(result) { self.set({mode: "view"}); - self.on_wrong_click(); }); - - }, + }, on_button_cancel: function(event) { if (this.can_be_discarded()) { this.set({mode: "view"}); diff --git a/addons/web/static/src/xml/base.xml b/addons/web/static/src/xml/base.xml index f150e47b420..a8d7a061a81 100644 --- a/addons/web/static/src/xml/base.xml +++ b/addons/web/static/src/xml/base.xml @@ -681,7 +681,7 @@
- + diff --git a/addons/web_kanban/static/src/css/kanban.css b/addons/web_kanban/static/src/css/kanban.css index c5c4a8222db..fd18835de88 100644 --- a/addons/web_kanban/static/src/css/kanban.css +++ b/addons/web_kanban/static/src/css/kanban.css @@ -514,6 +514,7 @@ .openerp .oe_kanban_view .oe_kanban_color_9 { background-color: #ffc7f1; } + .openerp .oe_form .oe_kanban_view .oe_kanban_column, .openerp .oe_form .oe_kanban_view .oe_kanban_group_header { padding: 0px; background: white; diff --git a/addons/web_kanban/static/src/js/kanban.js b/addons/web_kanban/static/src/js/kanban.js index 05505b26e53..524d4cdcca2 100644 --- a/addons/web_kanban/static/src/js/kanban.js +++ b/addons/web_kanban/static/src/js/kanban.js @@ -419,13 +419,10 @@ instance.web_kanban.KanbanGroup = instance.web.OldWidget.extend({ var fold_btn = this.$element.find('.oe_dropdown_kanban'); this.$records.click(function (ev) { if (ev.target == ev.currentTarget) { - if (jQuery(window).scrollTop() > 120 ) { - $('body,html').animate({ scrollTop: 0 }, 200); - } if (!self.state.folded) { self.view.do_bounce(add_btn); }else { - fold_btn.css('display','inline-block'); +// fold_btn.css('display','inline-block'); self.view.do_bounce(fold_btn); } } From 59e9f0ca0004ebf01a44645e8f32df7859044430 Mon Sep 17 00:00:00 2001 From: "Ajay Chauhan (OpenERP)" Date: Fri, 13 Jul 2012 16:20:30 +0530 Subject: [PATCH 192/349] [IMP] : Update Description for modules bzr revid: cha@tinyerp.com-20120713105030-jbl2mm81j6cyjake --- addons/share/__openerp__.py | 4 +- addons/stock_invoice_directly/__openerp__.py | 4 +- addons/stock_location/__openerp__.py | 70 ++--- addons/stock_no_autopicking/__openerp__.py | 6 +- addons/stock_planning/__openerp__.py | 269 +++++++++++-------- addons/subscription/__openerp__.py | 3 +- addons/survey/__openerp__.py | 9 +- addons/users_ldap/__openerp__.py | 122 ++++----- 8 files changed, 267 insertions(+), 220 deletions(-) diff --git a/addons/share/__openerp__.py b/addons/share/__openerp__.py index f5065bf6b8c..3e21d3d6c68 100644 --- a/addons/share/__openerp__.py +++ b/addons/share/__openerp__.py @@ -35,8 +35,8 @@ It specifically adds a 'share' button that is available in the Web client to share any kind of OpenERP data with colleagues, customers, friends. The system will work by creating new users and groups on the fly, and by -combining the appropriate access rights and ir.rules to ensure that the -shared users only have access to the data that has been shared with them. +combining the appropriate access rights and ir.rules to ensure that the shared +users only have access to the data that has been shared with them. This is extremely useful for collaborative work, knowledge sharing, synchronization with other companies. diff --git a/addons/stock_invoice_directly/__openerp__.py b/addons/stock_invoice_directly/__openerp__.py index 4ae8d518d83..c7c87af7ee0 100644 --- a/addons/stock_invoice_directly/__openerp__.py +++ b/addons/stock_invoice_directly/__openerp__.py @@ -28,8 +28,8 @@ Invoice Wizard for Delivery. ============================ -When you send or deliver goods, this module automatically launch -the invoicing wizard if the delivery is to be invoiced. +When you send or deliver goods, this module automatically launch the invoicing +wizard if the delivery is to be invoiced. """, 'author': 'OpenERP SA', 'website': 'http://www.openerp.com', diff --git a/addons/stock_location/__openerp__.py b/addons/stock_location/__openerp__.py index 6dea8fb4df8..108b0e4d848 100644 --- a/addons/stock_location/__openerp__.py +++ b/addons/stock_location/__openerp__.py @@ -38,51 +38,59 @@ Typically this could be used to: * Help rental management, by generating automated return moves for rented products -Once this module is installed, an additional tab appear on the product form, where you can add -Push and Pull flow specifications. The demo data of CPU1 product for that push/pull : +Once this module is installed, an additional tab appear on the product form, +where you can add Push and Pull flow specifications. The demo data of CPU1 +product for that push/pull : -Push flows ----------- -Push flows are useful when the arrival of certain products in a given location should always -be followed by a corresponding move to another location, optionally after a certain delay. -The original Warehouse application already supports such Push flow specifications on the -Locations themselves, but these cannot be refined per-product. +Push flows: +----------- -A push flow specification indicates which location is chained with which location, and with -what parameters. As soon as a given quantity of products is moved in the source location, -a chained move is automatically foreseen according to the parameters set on the flow specification -(destination location, delay, type of move, journal.) The new move can be automatically -processed, or require a manual confirmation, depending on the parameters. +Push flows are useful when the arrival of certain products in a given location +should always be followed by a corresponding move to another location, optionally +after a certain delay. The original Warehouse application already supports such +Push flow specifications on the Locations themselves, but these cannot be +refined per-product. -Pull flows ----------- -Pull flows are a bit different from Push flows, in the sense that they are not related to -the processing of product moves, but rather to the processing of procurement orders. -What is being pulled is a need, not directly products. -A classical example of Pull flow is when you have an Outlet company, with a parent Company -that is responsible for the supplies of the Outlet. +A push flow specification indicates which location is chained with which location, +and with what parameters. As soon as a given quantity of products is moved in the +source location, a chained move is automatically foreseen according to the +parameters set on the flow specification (destination location, delay, type of +move, journal.) The new move can be automatically processed, or require a manual +confirmation, depending on the parameters. + +Pull flows: +----------- + +Pull flows are a bit different from Push flows, in the sense that they are not +related to the processing of product moves, but rather to the processing of +procurement orders. What is being pulled is a need, not directly products. A +classical example of Pull flow is when you have an Outlet company, with a parent +Company that is responsible for the supplies of the Outlet. [ Customer ] <- A - [ Outlet ] <- B - [ Holding ] <~ C ~ [ Supplier ] -When a new procurement order (A, coming from the confirmation of a Sale Order for example) arrives -in the Outlet, it is converted into another procurement (B, via a Pull flow of type 'move') -requested from the Holding. When procurement order B is processed by the Holding company, and -if the product is out of stock, it can be converted into a Purchase Order (C) from the Supplier -(Pull flow of type Purchase). The result is that the procurement order, the need, is pushed +When a new procurement order (A, coming from the confirmation of a Sale Order +for example) arrives in the Outlet, it is converted into another procurement +(B, via a Pull flow of type 'move') requested from the Holding. When procurement +order B is processed by the Holding company, and if the product is out of stock, +it can be converted into a Purchase Order (C) from the Supplier (Pull flow of +type Purchase). The result is that the procurement order, the need, is pushed all the way between the Customer and Supplier. -Technically, Pull flows allow to process procurement orders differently, not only depending on -the product being considered, but also depending on which location holds the "need" for that -product (i.e. the destination location of that procurement order). +Technically, Pull flows allow to process procurement orders differently, not +only depending on the product being considered, but also depending on which +location holds the "need" for that product (i.e. the destination location of +that procurement order). -Use-Case --------- +Use-Case: +--------- You can use the demo data as follow: CPU1: Sell some CPU1 from Shop 1 and run the scheduler - Warehouse: delivery order, Shop 1: reception CPU3: - - When receiving the product, it goes to Quality Control location then stored to shelf 2. + - When receiving the product, it goes to Quality Control location then + stored to shelf 2. - When delivering the customer: Pick List -> Packing -> Delivery Order from Gate A """, 'author': 'OpenERP SA', diff --git a/addons/stock_no_autopicking/__openerp__.py b/addons/stock_no_autopicking/__openerp__.py index 5278768633c..7d9b84276d6 100644 --- a/addons/stock_no_autopicking/__openerp__.py +++ b/addons/stock_no_autopicking/__openerp__.py @@ -29,9 +29,9 @@ This module allows an intermediate picking process to provide raw materials to p ================================================================================================= One example of usage of this module is to manage production made by your -suppliers (sub-contracting). To achieve this, set the assembled product -which is sub-contracted to "No Auto-Picking" and put the location of the -supplier in the routing of the assembly operation. +suppliers (sub-contracting). To achieve this, set the assembled product which is +sub-contracted to "No Auto-Picking" and put the location of the supplier in the +routing of the assembly operation. """, 'author': 'OpenERP SA', 'depends': ['mrp'], diff --git a/addons/stock_planning/__openerp__.py b/addons/stock_planning/__openerp__.py index df373f59097..7391668eec3 100644 --- a/addons/stock_planning/__openerp__.py +++ b/addons/stock_planning/__openerp__.py @@ -27,165 +27,214 @@ "images": ["images/master_procurement_schedule.jpeg","images/sales_forecast.jpeg","images/stock_planning_line.jpeg","images/stock_sales_period.jpeg"], "depends": ["crm", "stock","sale"], "description": """ -MPS allows to create a manual procurement plan apart of the normal MRP scheduling, which works automatically based on minimum stock rules -========================================================================================================================================= +MPS allows to create a manual procurement plan apart of the normal MRP scheduling, which works automatically based on minimum stock rules. +========================================================================================================================================== -Quick Glossary --------------- -- Stock Period - the time boundaries (between Start Date and End Date) for your Sales and Stock forecasts and planning -- Sales Forecast - the quantity of products you plan to sell during the related Stock Period. -- Stock Planning - the quantity of products you plan to purchase or produce for the related Stock Period. +Quick Glossary: +--------------- + - Stock Period - the time boundaries (between Start Date and End Date) for + your Sales and Stock forecasts and planning + - Sales Forecast - the quantity of products you plan to sell during the + related Stock Period. + - Stock Planning - the quantity of products you plan to purchase or produce + for the related Stock Period. -To avoid confusion with the terms used by the ``sale_forecast`` module, ("Sales Forecast" and "Planning" are amounts) we use terms "Stock and Sales Forecast" and "Stock Planning" to emphasize that we use quantity values. +To avoid confusion with the terms used by the ``sale_forecast`` module, +("Sales Forecast" and "Planning" are amounts) we use terms "Stock and Sales +Forecast" and "Stock Planning" to emphasize that we use quantity values. -Where to begin --------------- +Where to begin: +--------------- Using this module is done in three steps: - * Create Stock Periods via the Warehouse>Configuration>Stock Periods menu (Mandatory step) - * Create Sale Forecasts fill them with forecast quantities, via the Sales>Sales Forecast menu. (Optional step but useful for further planning) - * Create the actual MPS plan, check the balance and trigger the procurements as required. The actual procurement is the final step for the Stock Period. + * Create Stock Periods via the Warehouse>Configuration>Stock Periods menu + (Mandatory step) + * Create Sale Forecasts fill them with forecast quantities, via the + Sales > Sales Forecast menu. (Optional step but useful for further planning) + * Create the actual MPS plan, check the balance and trigger the procurements + as required. The actual procurement is the final step for the Stock Period. -Stock Period configuration --------------------------- -You have two menu items for Periods in "Warehouse > Configuration > Stock Periods". There are: +Stock Period configuration: +--------------------------- +You have two menu items for Periods in "Warehouse > Configuration > Stock Periods". +There are: - * "Create Stock Periods" - can automatically creating daily, weekly or monthly periods. - * "Stock Periods" - allows to create any type of periods, change the dates and change the state of period. + * "Create Stock Periods" - can automatically creating daily, weekly or + monthly periods. + * "Stock Periods" - allows to create any type of periods, change the dates + and change the state of period. -Creating periods is the first step. You can create custom periods using the "New" button in "Stock Periods", but it is recommended to use the automatic assistant "Create Stock Periods". +Creating periods is the first step. You can create custom periods using the "New" +button in "Stock Periods", but it is recommended to use the automatic assistant +"Create Stock Periods". Remarks: - - These periods (Stock Periods) are completely distinct from Financial or other periods in the system. - - Periods are not assigned to companies (when you use multicompany). Module suppose that you use the same periods across companies. If you wish to use different periods for different companies define them as you wish (they can overlap). Later on in this text will be indications how to use such periods. - - When periods are created automatically their start and finish dates are with start hour 00:00:00 and end hour 23:59:00. When you create daily periods they will have start date 31.01.2010 00:00:00 and end date 31.01.2010 23:59:00. It works only in automatic creation of periods. When you create periods manually you have to take care about hours because you can have incorrect values form sales or stock. - - If you use overlapping periods for the same product, warehouse and company results can be unpredictable. - - If current date doesn't belong to any period or you have holes between periods results can be unpredictable. + - These periods (Stock Periods) are completely distinct from Financial or + other periods in the system. + - Periods are not assigned to companies (when you use multicompany). Module + suppose that you use the same periods across companies. If you wish to use + different periods for different companies define them as you wish (they can + overlap). Later on in this text will be indications how to use such periods. + - When periods are created automatically their start and finish dates are with + start hour 00:00:00 and end hour 23:59:00. When you create daily periods they + will have start date 31.01.2010 00:00:00 and end date 31.01.2010 23:59:00. + It works only in automatic creation of periods. When you create periods + manually you have to take care about hours because you can have incorrect + values form sales or stock. + - If you use overlapping periods for the same product, warehouse and company + results can be unpredictable. + - If current date doesn't belong to any period or you have holes between + periods results can be unpredictable. -Sales Forecasts configuration ------------------------------ +Sales Forecasts configuration: +------------------------------ You have few menus for Sales forecast in "Sales > Sales Forecasts": - - "Create Sales Forecasts" - can automatically create forecast lines according to your needs - - "Sales Forecasts" - for managing the Sales forecasts + - "Create Sales Forecasts" - can automatically create forecast lines + according to your needs + - "Sales Forecasts" - for managing the Sales forecasts -Menu "Create Sales Forecasts" creates Forecasts for products from selected Category, for selected Period and for selected Warehouse. +Menu "Create Sales Forecasts" creates Forecasts for products from selected +Category, for selected Period and for selected Warehouse. It is also possible to copy the previous forecast. Remarks: - - This tool doesn't duplicate lines if you already have an entry for the same Product, Period, Warehouse, created or validated by the same user. If you wish to create another forecast, if relevant lines exists you have to do it manually as described below. - - When created lines are validated by someone else you can use this tool to create another line for the same Period, Product and Warehouse. - - When you choose "Copy Last Forecast", created line take quantity and other settings from your (validated by you or created by you if not validated yet) forecast which is for last period before period of created forecast. + - This tool doesn't duplicate lines if you already have an entry for the same + Product, Period, Warehouse, created or validated by the same user. If you + wish to create another forecast, if relevant lines exists you have to do it + manually as described below. + - When created lines are validated by someone else you can use this tool to + create another line for the same Period, Product and Warehouse. + - When you choose "Copy Last Forecast", created line take quantity and other + settings from your (validated by you or created by you if not validated yet) + forecast which is for last period before period of created forecast. -On "Sales Forecast" form mainly you have to enter a forecast quantity in "Product Quantity". -Further calculation can work for draft forecasts. But validation can save your data against any accidental changes. -You can click "Validate" button but it is not mandatory. +On "Sales Forecast" form mainly you have to enter a forecast quantity in +"Product Quantity". Further calculation can work for draft forecasts. But +validation can save your data against any accidental changes. You can click +"Validate" button but it is not mandatory. -Instead of forecast quantity you may enter the amount of forecast sales via the "Product Amount" field. -The system will count quantity from amount according to Sale price of the Product. +Instead of forecast quantity you may enter the amount of forecast sales via the +"Product Amount" field. The system will count quantity from amount according to +Sale price of the Product. -All values on the form are expressed in unit of measure selected on form. -You can select a unit of measure from the default category or from secondary category. -When you change unit of measure the forecast product quantity will be re-computed according to new UoM. +All values on the form are expressed in unit of measure selected on form. You can +select a unit of measure from the default category or from secondary category. +When you change unit of measure the forecast product quantity will be re-computed +according to new UoM. To work out your Sale Forecast you can use the "Sales History" of the product. -You have to enter parameters to the top and left of this table and system will count sale quantities according to these parameters. -So you can get results for a given sales team or period. +You have to enter parameters to the top and left of this table and system will +count sale quantities according to these parameters. So you can get results for +a given sales team or period. -MPS or Procurement Planning ---------------------------- -An MPS planning consists in Stock Planning lines, used to analyze and possibly drive the procurement of -products for each relevant Stock Period and Warehouse. +MPS or Procurement Planning: +---------------------------- +An MPS planning consists in Stock Planning lines, used to analyze and possibly +drive the procurement of products for each relevant Stock Period and Warehouse. The menu is located in "Warehouse > Schedulers > Master Procurement Schedule": - - "Create Stock Planning Lines" - a wizard to help automatically create many planning lines - - "Master Procurement Schedule" - management of your planning lines + - "Create Stock Planning Lines" - a wizard to help automatically create many + planning lines + - "Master Procurement Schedule" - management of your planning lines -Similarly to the way Sales forecast serves to define your sales planning, the MPS lets you plan your procurements (Purchase/Manufacturing). -You can quickly populate the MPS with the "Create Stock Planning Lines" wizard, and then proceed to review them via the "Master Procurement Schedule" menu. +Similarly to the way Sales forecast serves to define your sales planning, the MPS +lets you plan your procurements (Purchase/Manufacturing).You can quickly populate +the MPS with the "Create Stock Planning Lines" wizard, and then proceed to review +them via the "Master Procurement Schedule" menu. -The "Create Stock Planning Lines" wizard lets you to quickly create all MPS lines for a given Product Category, and a given Period and Warehouse. -When you enable the "All Products with Forecast" option of the wizard, the system creates lines for all products having sales forecast for selected -Period and Warehouse (the selected Category will be ignored in this case). +The "Create Stock Planning Lines" wizard lets you to quickly create all MPS lines +for a given Product Category, and a given Period and Warehouse.When you enable +the "All Products with Forecast" option of the wizard, the system creates lines +for all products having sales forecast for selected Period and Warehouse (the +selected Category will be ignored in this case). -Under menu "Master Procurement Schedule" you will usually change the "Planned Out" and "Planned In" quantities and observe the resulting "Stock Simulation" value -to decide if you need to procure more products for the given Period. -"Planned Out" will be initially based on "Warehouse Forecast" which is the sum of all outgoing stock moves already planned for the Period and Warehouse. -Of course you can alter this value to provide your own quantities. It is not necessary to have any forecast. -"Planned In" quantity is used to calculate field "Incoming Left" which is the quantity to be procured to reach the "Stock Simulation" at the end of Period. -You can compare "Stock Simulation" quantity to minimum stock rules visible on the form. -And you can plan different quantity than in Minimum Stock Rules. Calculations are done for whole Warehouse by default, -if you want to see values for Stock location of calculated warehouse you can check "Stock Location Only". +Under menu "Master Procurement Schedule" you will usually change the "Planned Out" +and "Planned In" quantities and observe the resulting "Stock Simulation" value +to decide if you need to procure more products for the given Period. "Planned Out" +will be initially based on "Warehouse Forecast" which is the sum of all outgoing +stock moves already planned for the Period and Warehouse. Of course you can alter +this value to provide your own quantities. It is not necessary to have any forecast. +"Planned In" quantity is used to calculate field "Incoming Left" which is the +quantity to be procured to reach the "Stock Simulation" at the end of Period. You +can compare "Stock Simulation" quantity to minimum stock rules visible on the form. +And you can plan different quantity than in Minimum Stock Rules. Calculations are +done for whole Warehouse by default, if you want to see values for Stock location +of calculated warehouse you can check "Stock Location Only". -When you are satisfied with the "Planned Out", "Planned In" and end of period "Stock Simulation", -you can click on "Procure Incoming Left" to create a procurement for the "Incoming Left" quantity. -You can decide if procurement will go to the to Stock or Input location of the Warehouse. +When you are satisfied with the "Planned Out", "Planned In" and end of period +"Stock Simulation", you can click on "Procure Incoming Left" to create a +procurement for the "Incoming Left" quantity. You can decide if procurement will +go to the to Stock or Input location of the Warehouse. -If you don't want to Produce or Buy the product but just transfer the calculated quantity from another warehouse -you can click "Supply from Another Warehouse" (instead of "Procure Incoming Left") and the system will -create the appropriate picking list (stock moves). -You can choose to take the goods from the Stock or the Output location of the source warehouse. -Destination location (Stock or Input) in the destination warehouse will be taken as for the procurement case. +If you don't want to Produce or Buy the product but just transfer the calculated +quantity from another warehouse you can click "Supply from Another Warehouse" +(instead of "Procure Incoming Left") and the system will create the appropriate +picking list (stock moves). You can choose to take the goods from the Stock or +the Output location of the source warehouse. Destination location (Stock or Input) +in the destination warehouse will be taken as for the procurement case. -To see update the quantities of "Confirmed In", "Confirmed Out", "Confirmed In Before", "Planned Out Before" -and "Stock Simulation" you can press "Calculate Planning". +To see update the quantities of "Confirmed In", "Confirmed Out", "Confirmed In +Before", "Planned Out Before" and "Stock Simulation" you can press "Calculate +Planning". -All values on the form are expressed in unit of measure selected on form. -You can select one of unit of measure from default category or from secondary category. -When you change unit of measure the editable quantities will be re-computed according to new UoM. The others will be updated after pressing "Calculate Planning". +All values on the form are expressed in unit of measure selected on form. You can +select one of unit of measure from default category or from secondary category. +When you change unit of measure the editable quantities will be re-computed +according to new UoM. The others will be updated after pressing "Calculate Planning". -Computation of Stock Simulation quantities ------------------------------------------- -The Stock Simulation value is the estimated stock quantity at the end of the period. -The calculation always starts with the real stock on hand at the beginning of the current period, then -adds or subtracts the computed quantities. -When you are in the same period (current period is the same as calculated) Stock Simulation is calculated as follows: +Computation of Stock Simulation quantities: +------------------------------------------- +The Stock Simulation value is the estimated stock quantity at the end of the +period. The calculation always starts with the real stock on hand at the beginning +of the current period, then adds or subtracts the computed quantities. +When you are in the same period (current period is the same as calculated) Stock +Simulation is calculated as follows: -Stock Simulation = - Stock of beginning of current Period - - Planned Out - + Planned In +Stock Simulation = Stock of beginning of current Period - Planned Out + Planned In When you calculate period next to current: -Stock Simulation = - Stock of beginning of current Period - - Planned Out of current Period - + Confirmed In of current Period (incl. Already In) - - Planned Out of calculated Period - + Planned In of calculated Period . +Stock Simulation = Stock of beginning of current Period - Planned Out of current Period + + Confirmed In of current Period (incl. Already In) - Planned Out of calculated Period + + Planned In of calculated Period . -As you see the calculated Period is taken the same way as in previous case, but the calculation in the current -Period is a little bit different. First you should note that system takes for only Confirmed moves for the -current period. This means that you should complete the planning and procurement of the current Period before +As you see the calculated Period is taken the same way as in previous case, but +the calculation in the current Period is a little bit different. First you should +note that system takes for only Confirmed moves for the current period. This means +that you should complete the planning and procurement of the current Period before going to the next one. When you plan for future Periods: -Stock Simulation = - Stock of beginning of current Period - - Sum of Planned Out of Periods before calculated - + Sum of Confirmed In of Periods before calculated (incl. Already In) - - Planned Out of calculated Period - + Planned In of calculated Period. +Stock Simulation = Stock of beginning of current Period + - Sum of Planned Out of Periods before calculated + + Sum of Confirmed In of Periods before calculated (incl. Already In) + - Planned Out of calculated Period + + Planned In of calculated Period. -Here "Periods before calculated" designates all periods starting with the current until the period before the one being calculated. +Here "Periods before calculated" designates all periods starting with the current +until the period before the one being calculated. Remarks: - - Remember to make the proceed with the planning of each period in chronological order, otherwise the numbers will not reflect the - reality - - If you planned for future periods and find that real Confirmed Out is larger than Planned Out in some periods before, - you can repeat Planning and make another procurement. You should do it in the same planning line. - If you create another planning line the suggestions can be wrong. - - When you wish to work with different periods for some products, define two kinds of periods (e.g. Weekly and Monthly) and use - them for different products. Example: If you use always Weekly periods for Product A, and Monthly periods for Product B - all calculations will work correctly. You can also use different kind of periods for the same product from different warehouse - or companies. But you cannot use overlapping periods for the same product, warehouse and company because results - can be unpredictable. The same applies to Forecasts lines. + - Remember to make the proceed with the planning of each period in chronological + order, otherwise the numbers will not reflect the reality + - If you planned for future periods and find that real Confirmed Out is larger + than Planned Out in some periods before, you can repeat Planning and make + another procurement. You should do it in the same planning line. If you + create another planning line the suggestions can be wrong. + - When you wish to work with different periods for some products, define two + kinds of periods (e.g. Weekly and Monthly) and use them for different + products. Example: If you use always Weekly periods for Product A, and + Monthly periods for Product B all calculations will work correctly. You + can also use different kind of periods for the same product from different + warehouse or companies. But you cannot use overlapping periods for the same + product, warehouse and company because results can be unpredictable. The + same applies to Forecasts lines. """, "data": [ "security/stock_planning_security.xml", diff --git a/addons/subscription/__openerp__.py b/addons/subscription/__openerp__.py index 9e90b032bf9..3a4220efe52 100644 --- a/addons/subscription/__openerp__.py +++ b/addons/subscription/__openerp__.py @@ -32,7 +32,8 @@ This module allows to create new documents and add subscriptions on that documen e.g. To have an invoice generated automatically periodically: * Define a document type based on Invoice object - * Define a subscription whose source document is the document defined as above. Specify the interval information and partner to be invoice. + * Define a subscription whose source document is the document defined as + above. Specify the interval information and partner to be invoice. """, 'author': 'OpenERP SA', 'depends': ['base_tools'], diff --git a/addons/survey/__openerp__.py b/addons/survey/__openerp__.py index 90d7c2e469f..150623b0db7 100644 --- a/addons/survey/__openerp__.py +++ b/addons/survey/__openerp__.py @@ -27,10 +27,11 @@ This module is used for surveying. ================================== -It depends on the answers or reviews of some questions by different users. -A survey may have multiple pages. Each page may contain multiple questions and each question may have multiple answers. -Different users may give different answers of question and according to that survey is done. -Partners are also sent mails with user name and password for the invitation of the survey +It depends on the answers or reviews of some questions by different users. A +survey may have multiple pages. Each page may contain multiple questions and each +question may have multiple answers. Different users may give different answers of +question and according to that survey is done. Partners are also sent mails with +user name and password for the invitation of the survey. """, 'author': 'OpenERP SA', 'depends': ['base_tools', 'mail'], diff --git a/addons/users_ldap/__openerp__.py b/addons/users_ldap/__openerp__.py index e6cd59e8131..53a970997a8 100644 --- a/addons/users_ldap/__openerp__.py +++ b/addons/users_ldap/__openerp__.py @@ -27,89 +27,77 @@ "description": """ Adds support for authentication by LDAP server. =============================================== -This module allows users to login with their LDAP username and -password, and will automatically create OpenERP users for them -on the fly. +This module allows users to login with their LDAP username and password, and +will automatically create OpenERP users for them on the fly. -**Note**: This module only work on servers who have Python's -``ldap`` module installed. +Note: This module only work on servers who have Python's ``ldap`` module + installed. -Configuration -+++++++++++++ -After installing this module, you need to configure the LDAP -parameters in the Configuration tab of the Company details. -Different companies may have different LDAP servers, as long -as they have unique usernames (usernames need to be unique in -OpenERP, even across multiple companies). +Configuration: +-------------- +After installing this module, you need to configure the LDAP parameters in the +Configuration tab of the Company details. Different companies may have different +LDAP servers, as long as they have unique usernames (usernames need to be unique +in OpenERP, even across multiple companies). -Anonymous LDAP binding is also supported (for LDAP servers -that allow it), by simpling keeping the LDAP user and password -empty in the LDAP configuration. This does **not** allow -anonymous authentication for users, it is only for the master -LDAP account that is used to verify if a user exists before -attempting to authenticate it. +Anonymous LDAP binding is also supported (for LDAP servers that allow it), by +simpling keeping the LDAP user and password empty in the LDAP configuration. +This does not allow anonymous authentication for users, it is only for the master +LDAP account that is used to verify if a user exists before attempting to +authenticate it. -Securing the connection with STARTTLS is available for LDAP -servers supporting it, by enabling the TLS option in the LDAP -configuration. +Securing the connection with STARTTLS is available for LDAP servers supporting +it, by enabling the TLS option in the LDAP configuration. -For further options configuring the LDAP settings, refer to the -ldap.conf manpage: manpage:`ldap.conf(5)`. +For further options configuring the LDAP settings, refer to the ldap.conf +manpage: manpage:`ldap.conf(5)`. -Security Considerations -+++++++++++++++++++++++ -Users' LDAP passwords are never stored in the OpenERP database, -the LDAP server is queried whenever a user needs to be -authenticated. No duplication of the password occurs, and -passwords are managed in one place only. +Security Considerations: +------------------------ +Users' LDAP passwords are never stored in the OpenERP database, the LDAP server +is queried whenever a user needs to be authenticated. No duplication of the +password occurs, and passwords are managed in one place only. -OpenERP does not manage password changes in the LDAP, so -any change of password should be conducted by other means -in the LDAP directory directly (for LDAP users). +OpenERP does not manage password changes in the LDAP, so any change of password +should be conducted by other means in the LDAP directory directly (for LDAP users). -It is also possible to have local OpenERP users in the -database along with LDAP-authenticated users (the Administrator -account is one obvious example). +It is also possible to have local OpenERP users in the database along with +LDAP-authenticated users (the Administrator account is one obvious example). Here is how it works: - * The system first attempts to authenticate users against - the local OpenERP database ; - * if this authentication fails (for example because the - user has no local password), the system then attempts - to authenticate against LDAP ; + * The system first attempts to authenticate users against the local OpenERP + database; + * if this authentication fails (for example because the user has no local + password), the system then attempts to authenticate against LDAP; -As LDAP users have blank passwords by default in the local -OpenERP database (which means no access), the first step -always fails and the LDAP server is queried to do the -authentication. +As LDAP users have blank passwords by default in the local OpenERP database +(which means no access), the first step always fails and the LDAP server is +queried to do the authentication. -Enabling STARTTLS ensures that the authentication query to the -LDAP server is encrypted. +Enabling STARTTLS ensures that the authentication query to the LDAP server is +encrypted. -User Template -+++++++++++++ -In the LDAP configuration on the Company form, it is possible to -select a *User Template*. If set, this user will be used as -template to create the local users whenever someone authenticates -for the first time via LDAP authentication. -This allows pre-setting the default groups and menus of the -first-time users. +User Template: +-------------- +In the LDAP configuration on the Company form, it is possible to select a *User +Template*. If set, this user will be used as template to create the local users +whenever someone authenticates for the first time via LDAP authentication. This +allows pre-setting the default groups and menus of the first-time users. -**Warning**: if you set a password for the user template, -this password will be assigned as local password for each new -LDAP user, effectively setting a *master password* for these -users (until manually changed). You usually do not want this. -One easy way to setup a template user is to login once with -a valid LDAP user, let OpenERP create a blank local user with the -same login (and a blank password), then rename this new user -to a username that does not exist in LDAP, and setup its -groups the way you want. +Warning: if you set a password for the user template, this password will be + assigned as local password for each new LDAP user, effectively setting + a *master password* for these users (until manually changed). You + usually do not want this. One easy way to setup a template user is to + login once with a valid LDAP user, let OpenERP create a blank local + user with the same login (and a blank password), then rename this new + user to a username that does not exist in LDAP, and setup its groups + the way you want. -Interaction with base_crypt -+++++++++++++++++++++++++++ -The base_crypt module is not compatible with this module, and -will disable LDAP authentication if installed at the same time. +Interaction with base_crypt: +---------------------------- +The base_crypt module is not compatible with this module, and will disable LDAP +authentication if installed at the same time. """, From a7f251160165c1cae3077f248554acb8ce446955 Mon Sep 17 00:00:00 2001 From: "Jiten (OpenERP)" Date: Fri, 13 Jul 2012 16:39:04 +0530 Subject: [PATCH 193/349] [IMP] Improved code. bzr revid: jra@tinyerp.com-20120713110904-25smebblug0jawx2 --- addons/web/static/src/js/view_form.js | 2 +- addons/web/static/src/js/view_list.js | 11 ++++------- 2 files changed, 5 insertions(+), 8 deletions(-) diff --git a/addons/web/static/src/js/view_form.js b/addons/web/static/src/js/view_form.js index b48f33f327a..6139a8db5fd 100644 --- a/addons/web/static/src/js/view_form.js +++ b/addons/web/static/src/js/view_form.js @@ -564,7 +564,7 @@ instance.web.FormView = instance.web.View.extend(instance.web.form.FieldManagerM }); var edit_btn = $(".oe_form_button_edit"); this.$element.find(".oe_form_field, .oe_form_group_cell").click(function (e) { - edit_btn.addClass('oe_bounce_button_left'); + edit_btn.wrap("
").addClass('oe_bounce_button_left'); self.do_bounce(edit_btn); e.stopImmediatePropagation(); }); diff --git a/addons/web/static/src/js/view_list.js b/addons/web/static/src/js/view_list.js index 0cb6118af3f..f10c2bee4b2 100644 --- a/addons/web/static/src/js/view_list.js +++ b/addons/web/static/src/js/view_list.js @@ -287,8 +287,6 @@ instance.web.ListView = instance.web.View.extend( /** @lends instance.web.ListVi this.$element.find('.oe_list_buttons').replaceWith(this.$buttons); } this.$buttons.find('.oe_list_add') - .wrap("
") - .addClass('oe_bounce_button_left') .click(this.proxy('do_add_record')) .prop('disabled', grouped && this.options.editable); this.$buttons.on('click', '.oe_list_button_import', function() { @@ -984,11 +982,10 @@ instance.web.ListView.List = instance.web.Class.extend( /** @lends instance.web. throw "Could not find id in dataset" } self.row_clicked(e); - } else { - if (opts.options.$buttons) { - var create_btn = $(opts.options.$buttons.find('.oe_list_add')); - self.view.do_bounce(create_btn); - } + } else if (opts.options.$buttons) { + var create_btn = $(opts.options.$buttons.find('.oe_list_add')); + create_btn..wrap("
").addClass('oe_bounce_button_left') + self.view.do_bounce(create_btn); } }); }, From da641a1a00926eb44511731ce663f9cdcccd8ddf Mon Sep 17 00:00:00 2001 From: "Ajay Chauhan (OpenERP)" Date: Fri, 13 Jul 2012 16:53:05 +0530 Subject: [PATCH 194/349] [IMP] : Update Description for modules bzr revid: cha@tinyerp.com-20120713112305-citpeas3va7ii3c6 --- addons/wiki_faq/__openerp__.py | 3 +-- addons/wiki_quality_manual/__openerp__.py | 4 ++-- addons/wiki_sale_faq/__openerp__.py | 4 ++-- 3 files changed, 5 insertions(+), 6 deletions(-) diff --git a/addons/wiki_faq/__openerp__.py b/addons/wiki_faq/__openerp__.py index 5568372d76d..e89a7f7e0c7 100644 --- a/addons/wiki_faq/__openerp__.py +++ b/addons/wiki_faq/__openerp__.py @@ -27,8 +27,7 @@ This module provides a Wiki FAQ Template. ========================================= -It provides demo data, thereby creating a Wiki Group and a Wiki Page -for Wiki FAQ. +It provides demo data, thereby creating a Wiki Group and a Wiki Page for Wiki FAQ. """, 'author': 'OpenERP SA', 'website': 'http://openerp.com', diff --git a/addons/wiki_quality_manual/__openerp__.py b/addons/wiki_quality_manual/__openerp__.py index 92512f9e093..5e8725c2c7d 100644 --- a/addons/wiki_quality_manual/__openerp__.py +++ b/addons/wiki_quality_manual/__openerp__.py @@ -27,8 +27,8 @@ Quality Manual Template. ======================== -It provides demo data, thereby creating a Wiki Group and a Wiki Page -for Wiki Quality Manual. +It provides demo data, thereby creating a Wiki Group and a Wiki Page for Wiki +Quality Manual. """, 'author': 'OpenERP SA', 'website': 'http://openerp.com', diff --git a/addons/wiki_sale_faq/__openerp__.py b/addons/wiki_sale_faq/__openerp__.py index e2a502527b7..d63e5af7d1e 100644 --- a/addons/wiki_sale_faq/__openerp__.py +++ b/addons/wiki_sale_faq/__openerp__.py @@ -27,8 +27,8 @@ This module provides a Wiki Sales FAQ Template. =============================================== -It provides demo data, thereby creating a Wiki Group and a Wiki Page -for Wiki Sale FAQ. +It provides demo data, thereby creating a Wiki Group and a Wiki Page for Wiki +Sale FAQ. """, 'author': 'OpenERP SA', 'website': 'http://openerp.com', From 9feb9aba747b59a4605468196cd76219c0bd7eac Mon Sep 17 00:00:00 2001 From: "Ajay Chauhan (OpenERP)" Date: Fri, 13 Jul 2012 17:21:25 +0530 Subject: [PATCH 195/349] [IMP] : Update Description for modules bzr revid: cha@tinyerp.com-20120713115125-pyfzt5cijs63qr9d --- addons/account_accountant/__openerp__.py | 2 +- addons/account_check_writing/__openerp__.py | 2 +- addons/analytic_user_function/__openerp__.py | 10 ++++++---- addons/hr_holidays/__openerp__.py | 5 ++++- addons/point_of_sale/__openerp__.py | 14 +++++++------- addons/web_shortcuts/__openerp__.py | 4 ++-- 6 files changed, 21 insertions(+), 16 deletions(-) diff --git a/addons/account_accountant/__openerp__.py b/addons/account_accountant/__openerp__.py index f1155311f39..f80db855aca 100644 --- a/addons/account_accountant/__openerp__.py +++ b/addons/account_accountant/__openerp__.py @@ -28,7 +28,7 @@ Accounting Access Rights. ========================= -This module gives the admin user the access to all the accounting features +This module gives the Admin user the access to all the accounting features like the journal items and the chart of accounts. It assigns manager and user access rights to the Administrator, and only diff --git a/addons/account_check_writing/__openerp__.py b/addons/account_check_writing/__openerp__.py index d07457d0d00..faba82928ed 100644 --- a/addons/account_check_writing/__openerp__.py +++ b/addons/account_check_writing/__openerp__.py @@ -24,7 +24,7 @@ "author" : "OpenERP SA, NovaPoint Group", "category": "Generic Modules/Accounting", "description": """ -Module for the Check writing and check printing. +Module for the Check Writing and Check Printing. """, 'website': 'http://www.openerp.com', 'init_xml': [], diff --git a/addons/analytic_user_function/__openerp__.py b/addons/analytic_user_function/__openerp__.py index 33a6a543874..1c1f345aca0 100644 --- a/addons/analytic_user_function/__openerp__.py +++ b/addons/analytic_user_function/__openerp__.py @@ -28,11 +28,13 @@ This module allows you to define what is the default function of a specific user on a given account. ==================================================================================================== -This is mostly used when a user encodes his timesheet: the values are retrieved and -the fields are auto-filled. But the possibility to change these values is still available. +This is mostly used when a user encodes his timesheet: the values are retrieved +and the fields are auto-filled. But the possibility to change these values is +still available. -Obviously if no data has been recorded for the current account, the default value is given -as usual by the employee data so that this module is perfectly compatible with older configurations. +Obviously if no data has been recorded for the current account, the default +value is given as usual by the employee data so that this module is perfectly +compatible with older configurations. """, 'author': 'OpenERP SA', diff --git a/addons/hr_holidays/__openerp__.py b/addons/hr_holidays/__openerp__.py index 09754eb9df8..98e77f81c31 100644 --- a/addons/hr_holidays/__openerp__.py +++ b/addons/hr_holidays/__openerp__.py @@ -35,7 +35,10 @@ Implements a dashboard for human resource management that includes. * Leaves Note that: - - A synchronisation with an internal agenda (use of the CRM module) is possible: in order to automatically create a case when an holiday request is accepted, you have to link the holidays status to a case section. You can set up this info and your colour preferences in + - A synchronisation with an internal agenda (use of the CRM module) is + possible: in order to automatically create a case when an holiday request + is accepted, you have to link the holidays status to a case section. You + can setup this info and your colour preferences in Human Resources/Configuration/Leave Type - An employee can make an ask for more off-days by making a new Allocation It will increase his total of that leave type available (if the request is accepted). - There are two ways to print the employee's holidays: diff --git a/addons/point_of_sale/__openerp__.py b/addons/point_of_sale/__openerp__.py index 80933eaa785..f9d05d4797c 100644 --- a/addons/point_of_sale/__openerp__.py +++ b/addons/point_of_sale/__openerp__.py @@ -30,13 +30,13 @@ This module provides a quick and easy sale process. =================================================== Main features: ---------------- - * Fast encoding of the sale. - * Allow to choose one payment mode (the quick way) or to split the payment between several payment mode. - * Computation of the amount of money to return. - * Create and confirm picking list automatically. - * Allow the user to create invoice automatically. - * Allow to refund former sales. +-------------- + * Fast encoding of the sale + * Allow to choose one payment mode (the quick way) or to split the payment between several payment mode + * Computation of the amount of money to return + * Create and confirm picking list automatically + * Allow the user to create invoice automatically + * Allow to refund former sales """, 'author': 'OpenERP SA', 'images': ['images/cash_registers.jpeg', 'images/pos_analysis.jpeg','images/register_analysis.jpeg','images/sale_order_pos.jpeg','images/product_pos.jpeg'], diff --git a/addons/web_shortcuts/__openerp__.py b/addons/web_shortcuts/__openerp__.py index ca3119294ed..b587215a501 100644 --- a/addons/web_shortcuts/__openerp__.py +++ b/addons/web_shortcuts/__openerp__.py @@ -23,8 +23,8 @@ 'version': '1.0', 'category': 'Tools', 'description': """ -Enable shortcuts feature in the web client -========================================== +Enable shortcuts feature in the web client. +=========================================== Add a Shortcut icon in the systray in order to access the user's shortcuts (if any). Add a Shortcut icon besides the views title in order to add/remove a shortcut. From 31ae12a10f78b5ce26f175c51a7ba5ecad458989 Mon Sep 17 00:00:00 2001 From: "Ajay Chauhan (OpenERP)" Date: Fri, 13 Jul 2012 17:59:47 +0530 Subject: [PATCH 196/349] [IMP] : Update Description for modules bzr revid: cha@tinyerp.com-20120713122947-oaut0zx8fq0ers5m --- addons/base_crypt/__openerp__.py | 8 ++++---- addons/l10n_nl/__openerp__.py | 3 --- 2 files changed, 4 insertions(+), 7 deletions(-) diff --git a/addons/base_crypt/__openerp__.py b/addons/base_crypt/__openerp__.py index 3163f78ae7d..b106b7838c5 100644 --- a/addons/base_crypt/__openerp__.py +++ b/addons/base_crypt/__openerp__.py @@ -38,8 +38,8 @@ preventing anyone from reading the original password in the database. After installing this module it won't be possible to recover a forgotten password for your users, the only solution is for an admin to set a new password. -Security Warning -++++++++++++++++ +Security Warning: +----------------- Installing this module does not mean you can ignore other security measures, as the password is still transmitted unencrypted on the network, unless you are using a secure protocol such as XML-RPCS or HTTPS. @@ -48,8 +48,8 @@ contain critical data. Appropriate security measures need to be implemented by the system administrator in all areas, such as: protection of database backups, system files, remote shell access, physical server access. -Interation with LDAP authentication -+++++++++++++++++++++++++++++++++++ +Interation with LDAP authentication: +------------------------------------ This module is currently not compatible with the ``user_ldap`` module and will disable LDAP authentication completely if installed at the same time. diff --git a/addons/l10n_nl/__openerp__.py b/addons/l10n_nl/__openerp__.py index b46c8781f42..8b9cc3de451 100644 --- a/addons/l10n_nl/__openerp__.py +++ b/addons/l10n_nl/__openerp__.py @@ -114,9 +114,6 @@ Let op!! -> De template van het Nederlandse rekeningschema is opgebouwd uit 4 cijfers. Dit is het minimale aantal welk u moet invullen, u mag het aantal verhogen. De extra cijfers worden dan achter het rekeningnummer aangevult met "nullen". - * Dit is dezelfe configuratie wizard welke aangeroepen kan worden via - Financial Management/Configuration/Financial Accounting/Financial Accounts/Generate Chart of Accounts from a Chart Template. - """, "author" : "Veritos - Jan Verlaan", "website" : "http://www.veritos.nl", From 3db53edefc82bb146f3281ecb9751e239fb2df49 Mon Sep 17 00:00:00 2001 From: "Jiten (OpenERP)" Date: Fri, 13 Jul 2012 18:33:25 +0530 Subject: [PATCH 197/349] [IMP] Improved code to create bounce effect by CSS. bzr revid: jra@tinyerp.com-20120713130325-q0c6km66nkv2qi7p --- addons/web/static/src/css/base.css | 23 +++++++++++++++++++-- addons/web/static/src/js/corelib.js | 6 ------ addons/web/static/src/js/view_form.js | 3 +-- addons/web/static/src/js/view_list.js | 3 +-- addons/web_kanban/static/src/css/kanban.css | 3 --- addons/web_kanban/static/src/js/kanban.js | 6 +++--- 6 files changed, 26 insertions(+), 18 deletions(-) diff --git a/addons/web/static/src/css/base.css b/addons/web/static/src/css/base.css index 0d79e783370..293d182e6b7 100644 --- a/addons/web/static/src/css/base.css +++ b/addons/web/static/src/css/base.css @@ -2367,7 +2367,26 @@ div.ui-widget-overlay { filter: alpha(opacity=30); opacity: 0.3; } -.openerp .oe_bounce_button_left { + +.oe_bounce_left { float: left; - margin-right: 4px; +} + +.openerp .oe_bounce { + -moz-animation:bounce .40s linear; + -webkit-animation:bounce .40s linear; +} + +@-moz-keyframes bounce { + 0%{ -moz-transform:scale(0); opacity:0;} + 50%{ -moz-transform:scale(1.3); opacity:0.4; } + 75%{ -moz-transform:scale(0.9); opacity:0.7;} + 100%{ -moz-transform:scale(1); opacity:1;} +} + +@-webkit-keyframes bounce { + 0%{ -webkit-transform:scale(0); opacity:0;} + 50%{ -webkit-transform:scale(1.3); opacity:0.4;} + 75%{ -webkit-transform:scale(0.9); opacity:0.7;} + 100%{ -webkit-transform:scale(1); opacity:1;} } \ No newline at end of file diff --git a/addons/web/static/src/js/corelib.js b/addons/web/static/src/js/corelib.js index 03b67bce405..1ed4c4788e3 100644 --- a/addons/web/static/src/js/corelib.js +++ b/addons/web/static/src/js/corelib.js @@ -728,12 +728,6 @@ instance.web.Widget = instance.web.Class.extend(instance.web.WidgetMixin, { } return false; }, - /** - * Add bounce effect when click on wrong area - */ - do_bounce: function(element) { - element.effect("bounce", { times:3}, 300); - }, do_notify: function() { if (this.getParent()) { return this.getParent().do_notify.apply(this,arguments); diff --git a/addons/web/static/src/js/view_form.js b/addons/web/static/src/js/view_form.js index 6139a8db5fd..3c9ff030441 100644 --- a/addons/web/static/src/js/view_form.js +++ b/addons/web/static/src/js/view_form.js @@ -564,8 +564,7 @@ instance.web.FormView = instance.web.View.extend(instance.web.form.FieldManagerM }); var edit_btn = $(".oe_form_button_edit"); this.$element.find(".oe_form_field, .oe_form_group_cell").click(function (e) { - edit_btn.wrap("
").addClass('oe_bounce_button_left'); - self.do_bounce(edit_btn); + edit_btn.wrap('
').css('margin-right','4px').addClass('oe_bounce_left oe_bounce'); e.stopImmediatePropagation(); }); } else { diff --git a/addons/web/static/src/js/view_list.js b/addons/web/static/src/js/view_list.js index f10c2bee4b2..da93a047259 100644 --- a/addons/web/static/src/js/view_list.js +++ b/addons/web/static/src/js/view_list.js @@ -984,8 +984,7 @@ instance.web.ListView.List = instance.web.Class.extend( /** @lends instance.web. self.row_clicked(e); } else if (opts.options.$buttons) { var create_btn = $(opts.options.$buttons.find('.oe_list_add')); - create_btn..wrap("
").addClass('oe_bounce_button_left') - self.view.do_bounce(create_btn); + create_btn.wrap('
').css('margin-right','4px').addClass('oe_bounce_left oe_bounce'); } }); }, diff --git a/addons/web_kanban/static/src/css/kanban.css b/addons/web_kanban/static/src/css/kanban.css index fd18835de88..4c64a2be34b 100644 --- a/addons/web_kanban/static/src/css/kanban.css +++ b/addons/web_kanban/static/src/css/kanban.css @@ -518,7 +518,4 @@ .openerp .oe_form .oe_kanban_view .oe_kanban_column, .openerp .oe_form .oe_kanban_view .oe_kanban_group_header { padding: 0px; background: white; -} -.openerp .oe_kanban_quick_create_bounce { - float: right; } \ No newline at end of file diff --git a/addons/web_kanban/static/src/js/kanban.js b/addons/web_kanban/static/src/js/kanban.js index 524d4cdcca2..dcb0ad8c0cc 100644 --- a/addons/web_kanban/static/src/js/kanban.js +++ b/addons/web_kanban/static/src/js/kanban.js @@ -420,10 +420,10 @@ instance.web_kanban.KanbanGroup = instance.web.OldWidget.extend({ this.$records.click(function (ev) { if (ev.target == ev.currentTarget) { if (!self.state.folded) { - self.view.do_bounce(add_btn); + add_btn.wrap('
').addClass('oe_bounce'); }else { -// fold_btn.css('display','inline-block'); - self.view.do_bounce(fold_btn); +// fold_btn.css('display','inline-block'); + fold_btn.wrap('
').addClass('oe_bounce'); } } }); From cabf707734f52cd7721377f80d8efaea7056f5bc Mon Sep 17 00:00:00 2001 From: "Jiten (OpenERP)" Date: Fri, 13 Jul 2012 18:57:23 +0530 Subject: [PATCH 198/349] [ADD] Add comment for used bounce effect. bzr revid: jra@tinyerp.com-20120713132723-t5f7kv5gak13lks2 --- addons/web/static/src/js/view_form.js | 3 +++ addons/web/static/src/js/view_list.js | 6 +++++- addons/web_kanban/static/src/js/kanban.js | 3 +++ 3 files changed, 11 insertions(+), 1 deletion(-) diff --git a/addons/web/static/src/js/view_form.js b/addons/web/static/src/js/view_form.js index 3c9ff030441..fa75c3e2348 100644 --- a/addons/web/static/src/js/view_form.js +++ b/addons/web/static/src/js/view_form.js @@ -562,6 +562,9 @@ instance.web.FormView = instance.web.View.extend(instance.web.form.FieldManagerM _.each(this.fields,function(field){ field.set({"force_readonly": true}); }); + /* + * Add bounce effect on button 'Edit' when click on readonly page view. + */ var edit_btn = $(".oe_form_button_edit"); this.$element.find(".oe_form_field, .oe_form_group_cell").click(function (e) { edit_btn.wrap('
').css('margin-right','4px').addClass('oe_bounce_left oe_bounce'); diff --git a/addons/web/static/src/js/view_list.js b/addons/web/static/src/js/view_list.js index da93a047259..3b120065cc4 100644 --- a/addons/web/static/src/js/view_list.js +++ b/addons/web/static/src/js/view_list.js @@ -982,7 +982,11 @@ instance.web.ListView.List = instance.web.Class.extend( /** @lends instance.web. throw "Could not find id in dataset" } self.row_clicked(e); - } else if (opts.options.$buttons) { + } + /* + * Add bounce effect on button 'Create' when click on empty row of list view. + */ + else if (opts.options.$buttons) { var create_btn = $(opts.options.$buttons.find('.oe_list_add')); create_btn.wrap('
').css('margin-right','4px').addClass('oe_bounce_left oe_bounce'); } diff --git a/addons/web_kanban/static/src/js/kanban.js b/addons/web_kanban/static/src/js/kanban.js index dcb0ad8c0cc..9d794894d5b 100644 --- a/addons/web_kanban/static/src/js/kanban.js +++ b/addons/web_kanban/static/src/js/kanban.js @@ -415,6 +415,9 @@ instance.web_kanban.KanbanGroup = instance.web.OldWidget.extend({ self.quick.appendTo($(".oe_kanban_group_list_header", self.$records)); self.quick.focus(); }); + /* + * Add bounce effect on image '+' of kanban header when click on empty space of kanban grouped column. + */ var add_btn = this.$element.find('.oe_kanban_add'); var fold_btn = this.$element.find('.oe_dropdown_kanban'); this.$records.click(function (ev) { From ea9963073295e4a752407a7955b5c5487a6f28bb Mon Sep 17 00:00:00 2001 From: "Mustufa Rangwala (OpenERP)" Date: Mon, 16 Jul 2012 11:22:20 +0530 Subject: [PATCH 199/349] [IMP] l10n_in: typo bzr revid: mra@tinyerp.com-20120716055220-m732ts6l1549mr5g --- addons/l10n_in/__openerp__.py | 2 +- addons/l10n_in/l10n_in_installer.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/addons/l10n_in/__openerp__.py b/addons/l10n_in/__openerp__.py index 526b38318b5..18bc42a80cc 100644 --- a/addons/l10n_in/__openerp__.py +++ b/addons/l10n_in/__openerp__.py @@ -20,7 +20,7 @@ ############################################################################## { - "name": "India - Accounting", + "name": "Indian - Accounting", "version": "1.0", "description": """ Indian Accounting : Chart of Account. diff --git a/addons/l10n_in/l10n_in_installer.py b/addons/l10n_in/l10n_in_installer.py index 0d2b4f665b6..0a15d034605 100644 --- a/addons/l10n_in/l10n_in_installer.py +++ b/addons/l10n_in/l10n_in_installer.py @@ -65,4 +65,4 @@ class l10n_installer(osv.osv_memory): return res -# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: +# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: \ No newline at end of file From edda972621f98d7f6436ee87101bf3c1fbae5a58 Mon Sep 17 00:00:00 2001 From: "Mustufa Rangwala (OpenERP)" Date: Mon, 16 Jul 2012 11:38:12 +0530 Subject: [PATCH 200/349] [IMP] l10n_in: typo bzr revid: mra@tinyerp.com-20120716060812-dv6o6l2i3rw0vrmw --- addons/l10n_in/l10n_in_public_tax_template.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/l10n_in/l10n_in_public_tax_template.xml b/addons/l10n_in/l10n_in_public_tax_template.xml index 88f78121b22..55fa139d618 100644 --- a/addons/l10n_in/l10n_in_public_tax_template.xml +++ b/addons/l10n_in/l10n_in_public_tax_template.xml @@ -232,7 +232,7 @@ - Excise Duty-%2 + Excise Duty-2% 0.02 percent sale From 58ed2b3d3f229e18804154738b3e769d6c738804 Mon Sep 17 00:00:00 2001 From: "Mustufa Rangwala (OpenERP)" Date: Mon, 16 Jul 2012 12:14:35 +0530 Subject: [PATCH 201/349] [FIX] l10n_in: Fixes for child tax bzr revid: mra@tinyerp.com-20120716064435-n60u5aszetiwa1ui --- .../l10n_in/l10n_in_private_tax_template.xml | 32 ++++++++++++++ .../l10n_in/l10n_in_public_tax_template.xml | 42 +++++++++++++++++++ 2 files changed, 74 insertions(+) diff --git a/addons/l10n_in/l10n_in_private_tax_template.xml b/addons/l10n_in/l10n_in_private_tax_template.xml index 6cb8933728c..d78dc2cbad4 100644 --- a/addons/l10n_in/l10n_in_private_tax_template.xml +++ b/addons/l10n_in/l10n_in_private_tax_template.xml @@ -186,6 +186,16 @@ percent sale + + + + 1 + + 1 + + 1 + + 1 @@ -194,6 +204,16 @@ 0.01 percent sale + + + + 1 + + 1 + + 1 + + 1 @@ -221,6 +241,12 @@ 0.02 percent all + + + + + + @@ -230,6 +256,12 @@ 0.01 percent all + + + + + + diff --git a/addons/l10n_in/l10n_in_public_tax_template.xml b/addons/l10n_in/l10n_in_public_tax_template.xml index 55fa139d618..03dbfa7cc75 100644 --- a/addons/l10n_in/l10n_in_public_tax_template.xml +++ b/addons/l10n_in/l10n_in_public_tax_template.xml @@ -193,6 +193,17 @@ Service Tax-%2 + + + + + 1 + + 1 + + 1 + + 1 0.02 percent all @@ -203,6 +214,17 @@ Service Tax-%1 0.01 + + + + + 1 + + 1 + + 1 + + 1 percent all @@ -236,6 +258,16 @@ 0.02 percent sale + + + + 1 + + 1 + + 1 + + 1 @@ -245,6 +277,16 @@ 0.01 percent sale + + + + 1 + + 1 + + 1 + + 1 From 66d1d0e33493b55a7fac8340e0ce009dde363381 Mon Sep 17 00:00:00 2001 From: "Jiten (OpenERP)" Date: Mon, 16 Jul 2012 12:35:23 +0530 Subject: [PATCH 202/349] [IMP] Improved code. bzr revid: jra@tinyerp.com-20120716070523-iim1n7ghl1a0tg6o --- addons/web/static/src/css/base.css | 23 ----------------------- addons/web/static/src/js/view_form.js | 2 +- addons/web/static/src/js/view_list.js | 2 +- 3 files changed, 2 insertions(+), 25 deletions(-) diff --git a/addons/web/static/src/css/base.css b/addons/web/static/src/css/base.css index 293d182e6b7..66104b446ea 100644 --- a/addons/web/static/src/css/base.css +++ b/addons/web/static/src/css/base.css @@ -2366,27 +2366,4 @@ div.ui-widget-overlay { background: black; filter: alpha(opacity=30); opacity: 0.3; -} - -.oe_bounce_left { - float: left; -} - -.openerp .oe_bounce { - -moz-animation:bounce .40s linear; - -webkit-animation:bounce .40s linear; -} - -@-moz-keyframes bounce { - 0%{ -moz-transform:scale(0); opacity:0;} - 50%{ -moz-transform:scale(1.3); opacity:0.4; } - 75%{ -moz-transform:scale(0.9); opacity:0.7;} - 100%{ -moz-transform:scale(1); opacity:1;} -} - -@-webkit-keyframes bounce { - 0%{ -webkit-transform:scale(0); opacity:0;} - 50%{ -webkit-transform:scale(1.3); opacity:0.4;} - 75%{ -webkit-transform:scale(0.9); opacity:0.7;} - 100%{ -webkit-transform:scale(1); opacity:1;} } \ No newline at end of file diff --git a/addons/web/static/src/js/view_form.js b/addons/web/static/src/js/view_form.js index fa75c3e2348..f9eaaba4b91 100644 --- a/addons/web/static/src/js/view_form.js +++ b/addons/web/static/src/js/view_form.js @@ -567,7 +567,7 @@ instance.web.FormView = instance.web.View.extend(instance.web.form.FieldManagerM */ var edit_btn = $(".oe_form_button_edit"); this.$element.find(".oe_form_field, .oe_form_group_cell").click(function (e) { - edit_btn.wrap('
').css('margin-right','4px').addClass('oe_bounce_left oe_bounce'); + edit_btn.wrap('
').css('margin-right','4px').addClass('oe_left oe_bounce'); e.stopImmediatePropagation(); }); } else { diff --git a/addons/web/static/src/js/view_list.js b/addons/web/static/src/js/view_list.js index 3b120065cc4..a79e25a1474 100644 --- a/addons/web/static/src/js/view_list.js +++ b/addons/web/static/src/js/view_list.js @@ -988,7 +988,7 @@ instance.web.ListView.List = instance.web.Class.extend( /** @lends instance.web. */ else if (opts.options.$buttons) { var create_btn = $(opts.options.$buttons.find('.oe_list_add')); - create_btn.wrap('
').css('margin-right','4px').addClass('oe_bounce_left oe_bounce'); + create_btn.wrap('
').css('margin-right','4px').addClass('oe_left oe_bounce'); } }); }, From 5bba0c8e6b899c29ff2102b94ebf6abf290e1402 Mon Sep 17 00:00:00 2001 From: "Jiten (OpenERP)" Date: Mon, 16 Jul 2012 12:56:44 +0530 Subject: [PATCH 203/349] [ADD] Add css and sass file for bounce animation effect. bzr revid: jra@tinyerp.com-20120716072644-ls2q54fr5o8fjyd7 --- addons/web/static/src/css/base.css | 19 +++++++++++++++++ addons/web/static/src/css/base.sass | 33 +++++++++++++++++++++++++++++ 2 files changed, 52 insertions(+) diff --git a/addons/web/static/src/css/base.css b/addons/web/static/src/css/base.css index 66104b446ea..3e260601581 100644 --- a/addons/web/static/src/css/base.css +++ b/addons/web/static/src/css/base.css @@ -2366,4 +2366,23 @@ div.ui-widget-overlay { background: black; filter: alpha(opacity=30); opacity: 0.3; +} + +.openerp .oe_bounce { + -moz-animation:bounce .40s linear; + -webkit-animation:bounce .40s linear; +} + +@-moz-keyframes bounce { + 0%{ -moz-transform:scale(0); opacity:0;} + 50%{ -moz-transform:scale(1.3); opacity:0.4; } + 75%{ -moz-transform:scale(0.9); opacity:0.7;} + 100%{ -moz-transform:scale(1); opacity:1;} +} + +@-webkit-keyframes bounce { + 0%{ -webkit-transform:scale(0); opacity:0;} + 50%{ -webkit-transform:scale(1.3); opacity:0.4;} + 75%{ -webkit-transform:scale(0.9); opacity:0.7;} + 100%{ -webkit-transform:scale(1); opacity:1;} } \ No newline at end of file diff --git a/addons/web/static/src/css/base.sass b/addons/web/static/src/css/base.sass index 559125aa3c3..1410a1ce872 100644 --- a/addons/web/static/src/css/base.sass +++ b/addons/web/static/src/css/base.sass @@ -1865,5 +1865,38 @@ $sheet-max-width: 860px div.ui-widget-overlay background: black @include opacity(0.3) + +.openerp .oe_bounce + -moz-animation: bounce .40s linear + -webkit-animation: bounce .40s linear + +@-moz-keyframes bounce + 0% + -moz-transform: scale(0) + opacity: 0 + 50% + -moz-transform: scale(1.3) + opacity: 0.4 + 75% + -moz-transform: scale(0.9) + opacity: 0.7 + 100% + -moz-transform: scale(1) + opacity: 1 + + +@-webkit-keyframes bounce + 0% + -webkit-transform: scale(0) + opacity: 0 + 50% + -webkit-transform: scale(1.3) + opacity: 0.4 + 75% + -webkit-transform: scale(0.9) + opacity: 0.7 + 100% + -webkit-transform: scale(1) + opacity: 1 // au BufWritePost,FileWritePost *.sass :!sass --style expanded --line-numbers > "%:p:r.css" // vim:tabstop=4:shiftwidth=4:softtabstop=4:fdm=marker: From 6d9cf3fe2dd641fdffa7f5e816728b66d0ec3c50 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20van=20der=20Essen?= Date: Mon, 16 Jul 2012 11:46:37 +0200 Subject: [PATCH 204/349] [IMP] point_of_sale: no scrollbar in fullscreen mode bzr revid: fva@openerp.com-20120716094637-n2mdh94pb147ggc0 --- addons/web/static/src/js/chrome.js | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/addons/web/static/src/js/chrome.js b/addons/web/static/src/js/chrome.js index 094e2f184e6..7830102f9f6 100644 --- a/addons/web/static/src/js/chrome.js +++ b/addons/web/static/src/js/chrome.js @@ -1056,10 +1056,13 @@ instance.web.WebClient = instance.web.Widget.extend({ } }, set_content_full_screen: function(fullscreen) { - if (fullscreen) + if (fullscreen){ $(".oe_webclient", this.$element).addClass("oe_content_full_screen"); - else + $("body").css({'overflow-y':'hidden'}); + }else{ $(".oe_webclient", this.$element).removeClass("oe_content_full_screen"); + $("body").css({'overflow-y':'scroll'}); + } } }); From f04758ec010af9c1a000c89e87c5ca29a3cfadef Mon Sep 17 00:00:00 2001 From: "Amit (OpenERP)" Date: Mon, 16 Jul 2012 15:59:20 +0530 Subject: [PATCH 205/349] [FIX] account : Fixes the cash register problem lp bug: https://launchpad.net/bugs/1003849 fixed bzr revid: amp@tinyerp.com-20120716102920-ifte2m8c6v8cldjl --- addons/account/account_view.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/account/account_view.xml b/addons/account/account_view.xml index 80202d97d6c..a881519776e 100644 --- a/addons/account/account_view.xml +++ b/addons/account/account_view.xml @@ -2550,7 +2550,7 @@ action = pool.get('res.config').next(cr, uid, [], context) - + From 75c2845fb5414a65a7366273eda3c1234d5d43b9 Mon Sep 17 00:00:00 2001 From: Xavier Morel Date: Mon, 16 Jul 2012 13:04:30 +0200 Subject: [PATCH 206/349] [ADD] default_get support on new row creation bzr revid: xmo@openerp.com-20120716110430-9uv352m46d3mn1bx --- addons/web/static/src/css/base.css | 13 +++ addons/web/static/src/css/base.sass | 13 +++ addons/web/static/src/js/view_form.js | 21 +++-- .../web/static/src/js/view_list_editable.js | 16 ++-- addons/web/static/test/list-editable.js | 89 +++++++++++++++++-- 5 files changed, 136 insertions(+), 16 deletions(-) diff --git a/addons/web/static/src/css/base.css b/addons/web/static/src/css/base.css index 2d27b380386..97d2fcf57a7 100644 --- a/addons/web/static/src/css/base.css +++ b/addons/web/static/src/css/base.css @@ -2382,6 +2382,19 @@ .kitten-mode-activated > * { opacity: 0.7; } +.kitten-mode-activated .oe_footer a { + background-image: url(http://www.risacher.com/la-rache/zfiles/la-rache.png); + font-size: 1px; + letter-spacing: -1px; + color: transparent; + display: inline-block; + height: 15px; + width: 80px; + vertical-align: top; +} +.kitten-mode-activated .oe_footer a span { + display: none; +} div.ui-widget-overlay { background: black; diff --git a/addons/web/static/src/css/base.sass b/addons/web/static/src/css/base.sass index 52b28b7da4f..c5197743acd 100644 --- a/addons/web/static/src/css/base.sass +++ b/addons/web/static/src/css/base.sass @@ -1879,6 +1879,19 @@ $sheet-max-width: 860px background-attachment: fixed >* opacity: 0.70 + + .oe_footer a + background-image: url(http://www.risacher.com/la-rache/zfiles/la-rache.png) + font-size: 1px + letter-spacing: -1px + color: transparent + display: inline-block + height: 15px + width: 80px + vertical-align: top + + span + display: none // }}} div.ui-widget-overlay diff --git a/addons/web/static/src/js/view_form.js b/addons/web/static/src/js/view_form.js index d10990b1717..b090c1c18ec 100644 --- a/addons/web/static/src/js/view_form.js +++ b/addons/web/static/src/js/view_form.js @@ -336,6 +336,20 @@ instance.web.FormView = instance.web.View.extend(instance.web.form.FieldManagerM self.$element.add(self.$buttons).removeClass('oe_form_dirty'); }); }, + /** + * Loads and sets up the default values for the model as the current + * record + * + * @return {$.Deferred} + */ + load_defaults: function () { + var keys = _.keys(this.fields_view.fields); + if (keys.length) { + return this.dataset.default_get(keys) + .pipe(this.on_record_loaded); + } + return this.on_record_loaded({}); + }, on_form_changed: function() { this.trigger("view_content_has_changed"); }, @@ -608,12 +622,7 @@ instance.web.FormView = instance.web.View.extend(instance.web.form.FieldManagerM this.set({mode: "edit"}); return $.when(this.has_been_loaded).pipe(function() { if (self.can_be_discarded()) { - var keys = _.keys(self.fields_view.fields); - if (keys.length) { - return self.dataset.default_get(keys) - .pipe(self.on_record_loaded); - } - return self.on_record_loaded({}); + return self.load_defaults(); } }); }, diff --git a/addons/web/static/src/js/view_list_editable.js b/addons/web/static/src/js/view_list_editable.js index 93b7d38e3bb..bad3f939db2 100644 --- a/addons/web/static/src/js/view_list_editable.js +++ b/addons/web/static/src/js/view_list_editable.js @@ -163,7 +163,10 @@ openerp.web.list_editable = function (instance) { */ startEdition: function (record) { var self = this; - if (!record) { + var item = false; + if (record) { + item = record.attributes; + } else { var attrs = {id: false}; _(this.columns).chain() .filter(function (x) { return x.tag === 'field'}) @@ -182,7 +185,7 @@ openerp.web.list_editable = function (instance) { record: record.attributes, cancel: false }, function () { - return self.editor.edit(record.attributes, function (field_name, field) { + return self.editor.edit(item, function (field_name, field) { var cell = cells[field_name]; if (!cell || field.get('effective_readonly')) { // Readonly fields can just remain the list's, form's @@ -466,11 +469,14 @@ openerp.web.list_editable = function (instance) { // TODO: specify sequence of edit calls var self = this; var form = self.form; - record = _.extend({}, record); - return form.on_record_loaded(record).pipe(function () { + var loaded = record + ? form.on_record_loaded(_.extend({}, record)) + : form.load_defaults(); + + return loaded.pipe(function () { return form.do_show({reload: false}); }).pipe(function () { - self.record = record; + self.record = form.datarecord; _(form.fields).each(function (field, name) { configureField(name, field); }); diff --git a/addons/web/static/test/list-editable.js b/addons/web/static/test/list-editable.js index 5a03f263ffe..5b702c36f96 100644 --- a/addons/web/static/test/list-editable.js +++ b/addons/web/static/test/list-editable.js @@ -108,7 +108,7 @@ $(document).ready(function () { var counter = 0; e.appendTo($fix) .pipe(function () { - return e.edit(null, function () { + return e.edit({}, function () { ++counter; }); }) @@ -138,7 +138,7 @@ $(document).ready(function () { var counter = 0; e.appendTo($fix) .pipe(function () { - return e.edit(null, function () { + return e.edit({}, function () { ++counter; }); }) @@ -171,7 +171,7 @@ $(document).ready(function () { var warnings = 0; e.appendTo($fix) .pipe(function () { - return e.edit(null, function () { + return e.edit({}, function () { ++counter; }); }) @@ -186,6 +186,85 @@ $(document).ready(function () { }) }); + module('list-edition', { + setup: function () { + baseSetup(); + + var records = {}; + _.extend(instance.connection.responses, { + '/web/listview/load': function () { + return {result: { + type: 'tree', + fields: { + a: {type: 'char', string: "A"}, + b: {type: 'char', string: "B"}, + c: {type: 'char', string: "C"} + }, + arch: { + tag: 'tree', + attrs: {}, + children: [ + {tag: 'field', attrs: {name: 'a'}}, + {tag: 'field', attrs: {name: 'b'}}, + {tag: 'field', attrs: {name: 'c'}} + ] + } + }}; + }, + '/web/dataset/call_kw:create': function (params) { + records[42] = _.extend({}, params.params.args[0]); + return {result: 42}; + }, + '/web/dataset/call_kw:read': function (params) { + var id = params.params.args[0][0]; + if (id in records) { + return {result: [records[id]]}; + } + return {result: []}; + } + }) + } + }); + asyncTest('newrecord', 6, function () { + var got_defaults = false; + instance.connection.responses['/web/dataset/call_kw:default_get'] = function (params) { + var fields = params.params.args[0]; + deepEqual( + fields, ['a', 'b', 'c'], + "should ask defaults for all fields"); + got_defaults = true; + return {result: { + a: "qux", + b: "quux" + }}; + }; + + var ds = new instance.web.DataSetStatic(null, 'demo', null, [1]); + var l = new instance.web.ListView({}, ds); + l.set_editable(true); + + l.appendTo($fix) + .pipe(l.proxy('reload_content')) + .pipe(function () { + return l.startEdition(); + }) + .always(start) + .pipe(function () { + ok(got_defaults, "should have fetched default values for form"); + return l.saveEdition(); + }) + .pipe(function (result) { + ok(result.created, "should yield newly created record"); + equal(result.record.get('a'), "qux", + "should have used default values"); + equal(result.record.get('b'), "quux", + "should have used default values"); + ok(!result.record.get('c'), + "should have no value if there was no default"); + }) + .fail(function (e) { ok(false, e && e.message || e); }); + }); + module('list-edition-events', { setup: function () { baseSetup(); @@ -220,7 +299,7 @@ $(document).ready(function () { }); } }); - asyncTest('edition events', function () { + asyncTest('edition events', 4, function () { var ds = new instance.web.DataSetStatic(null, 'demo', null, [1]); var o = { counter: 0, @@ -235,7 +314,7 @@ $(document).ready(function () { .pipe(function () { ok(l.options.editable, "should be editable"); equal(o.counter, 0, "should have seen no event yet"); - return l.startEdition(); + return l.startEdition(l.records.get(1)); }) .pipe(function () { ok(l.editor.isEditing(), "should be editing"); From 8dfc9f18d365d8decd635f69b2b03dcb7f254ad6 Mon Sep 17 00:00:00 2001 From: "Purnendu Singh (OpenERP)" Date: Tue, 17 Jul 2012 15:43:07 +0530 Subject: [PATCH 207/349] [IMP] project_mrp: Improve the description as the produce is now Manufacture bzr revid: psi@tinyerp.com-20120717101307-zlojt3bltwkfa46s --- addons/project_mrp/__openerp__.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/addons/project_mrp/__openerp__.py b/addons/project_mrp/__openerp__.py index 2c858fb8814..5c818a57e7a 100644 --- a/addons/project_mrp/__openerp__.py +++ b/addons/project_mrp/__openerp__.py @@ -32,9 +32,9 @@ This module will automatically create a new task for each procurement order line (e.g. for sale order lines), if the corresponding product meets the following characteristics: - * Type = Service - * Procurement method (Order fulfillment) = MTO (make to order) - * Supply/Procurement method = Produce + * Product Type = Service + * Procurement Method (Order fulfillment) = MTO (Make to Order) + * Supply/Procurement Method = Manufacture If on top of that a projet is specified on the product form (in the Procurement tab), then the new task will be created in that specific project. Otherwise, the From c3368bf2bbd779b1dd9e2bbc202cf85845803030 Mon Sep 17 00:00:00 2001 From: Xavier Morel Date: Tue, 17 Jul 2012 15:02:51 +0200 Subject: [PATCH 208/349] [FIX] use native DOM methods to programmatically set focus on an element MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit jQuery breaks the expected ordering of triggered consequential events to a focusing (a blur event on the source field, a focus event on the destination one), which in turn breaks the expectations of the auto-saving o2m, making the o2m field attempt to auto-save immediately after having saved a row (via the [Return] key) e.g. create a new row in a list o2m, press [Return], the widget creates a new empty row and immediately tries to save it resulting — depending on the view's setup — in either an empty row being saved or a bunch of fields being marked as invalid even though the user hasn't done anything yet. Bypass jquery to avoid this issue. jQuery tracker ref: http://bugs.jquery.com/ticket/12094 bzr revid: xmo@openerp.com-20120717130251-q2cjoj6rkxh0bvdq --- addons/web/static/src/js/view_form.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/web/static/src/js/view_form.js b/addons/web/static/src/js/view_form.js index b090c1c18ec..98d50546c52 100644 --- a/addons/web/static/src/js/view_form.js +++ b/addons/web/static/src/js/view_form.js @@ -1916,7 +1916,7 @@ instance.web.form.AbstractField = instance.web.form.FormWidget.extend(instance.w */ delay_focus: function($elem) { setTimeout(function() { - $elem.focus(); + $elem[0].focus(); }, 50); }, /** From 01e6e3ec079c3221d14903a4a6aa066e0b53dafb Mon Sep 17 00:00:00 2001 From: Xavier Morel Date: Tue, 17 Jul 2012 15:23:08 +0200 Subject: [PATCH 209/349] [IMP] DOWNCASE ALL THE THINGS apparently and contrary to what I remembered, we're still supposed to use underscore_separated method names, not camelCase bzr revid: xmo@openerp.com-20120717132308-wvpldtprt33heee3 --- addons/web/static/src/js/view_form.js | 34 ++--- addons/web/static/src/js/view_list.js | 4 +- .../web/static/src/js/view_list_editable.js | 120 +++++++++--------- addons/web/static/test/list-editable.js | 36 +++--- doc/list-view.rst | 29 ++--- 5 files changed, 110 insertions(+), 113 deletions(-) diff --git a/addons/web/static/src/js/view_form.js b/addons/web/static/src/js/view_form.js index 98d50546c52..948b3a73913 100644 --- a/addons/web/static/src/js/view_form.js +++ b/addons/web/static/src/js/view_form.js @@ -3122,7 +3122,7 @@ instance.web.form.FieldOne2Many = instance.web.form.AbstractField.extend({ } return res; } else if (this.viewmanager.active_view === "list") { - var res = $.when(view.ensureSaved()); + var res = $.when(view.ensure_saved()); if (!res.isResolved() && !res.isRejected()) { console.warn("Asynchronous get_value() is not supported in list view."); } @@ -3209,22 +3209,22 @@ instance.web.form.One2ManyListView = instance.web.ListView.extend({ this._super(parent, dataset, view_id, _.extend(options || {}, { ListType: instance.web.form.One2ManyList })); - this.on('edit:before', this, this.proxy('_beforeEdit')); - this.on('save:before cancel:before', this, this.proxy('_beforeUnEdit')); + this.on('edit:before', this, this.proxy('_before_edit')); + this.on('save:before cancel:before', this, this.proxy('_before_unedit')); this.records - .bind('add', this.proxy("changedRecords")) - .bind('edit', this.proxy("changedRecords")) - .bind('remove', this.proxy("changedRecords")); + .bind('add', this.proxy("changed_records")) + .bind('edit', this.proxy("changed_records")) + .bind('remove', this.proxy("changed_records")); }, start: function () { var ret = this._super(); this.$element .off('mousedown.handleButtons') - .on('mousedown.handleButtons', 'table button', this.proxy('_buttonDown')); + .on('mousedown.handleButtons', 'table button', this.proxy('_button_down')); return ret; }, - changedRecords: function () { + changed_records: function () { this.o2m.trigger_on_change(); }, is_valid: function () { @@ -3308,21 +3308,21 @@ instance.web.form.One2ManyListView = instance.web.ListView.extend({ } var parent_form = this.o2m.view; var self = this; - this.ensureSaved().pipe(function () { + this.ensure_saved().pipe(function () { return parent_form.do_save(); }).then(function () { - self.handleButton(name, id, callback); + self.handle_button(name, id, callback); }); }, - _beforeEdit: function () { + _before_edit: function () { this.__ignore_blur = false; - this.editor.form.on('blurred', this, this._onFormBlur); + this.editor.form.on('blurred', this, this._on_form_blur); }, - _beforeUnEdit: function () { - this.editor.form.off('blurred', this, this._onFormBlur); + _before_unedit: function () { + this.editor.form.off('blurred', this, this._on_form_blur); }, - _buttonDown: function () { + _button_down: function () { // If a button is clicked (usually some sort of action button), it's // the button's responsibility to ensure the editable list is in the // correct state -> ignore form blurring @@ -3332,12 +3332,12 @@ instance.web.form.One2ManyListView = instance.web.ListView.extend({ * Handles blurring of the nested form (saves the currently edited row), * unless the flag to ignore the event is set to ``true`` */ - _onFormBlur: function () { + _on_form_blur: function () { if (this.__ignore_blur) { this.__ignore_blur = false; return; } - this.saveEdition(); + this.save_edition(); }, keyup_ENTER: function () { // blurring caused by hitting the [Return] key, should skip the diff --git a/addons/web/static/src/js/view_list.js b/addons/web/static/src/js/view_list.js index 2bbb9e87866..82c9d1be12b 100644 --- a/addons/web/static/src/js/view_list.js +++ b/addons/web/static/src/js/view_list.js @@ -676,7 +676,7 @@ instance.web.ListView = instance.web.View.extend( /** @lends instance.web.ListVi * @param {Function} callback should be called after the action is executed, if non-null */ do_button_action: function (name, id, callback) { - this.handleButton(name, id, callback); + this.handle_button(name, id, callback); }, /** * Base handling of buttons, can be called when overriding do_button_action @@ -688,7 +688,7 @@ instance.web.ListView = instance.web.View.extend( /** @lends instance.web.ListVi * @param {Object} id id of the record the action should be called on * @param {Function} callback should be called after the action is executed, if non-null */ - handleButton: function (name, id, callback) { + handle_button: function (name, id, callback) { var action = _.detect(this.columns, function (field) { return field.name === name; }); diff --git a/addons/web/static/src/js/view_list_editable.js b/addons/web/static/src/js/view_list_editable.js index bad3f939db2..fa39329fc81 100644 --- a/addons/web/static/src/js/view_list_editable.js +++ b/addons/web/static/src/js/view_list_editable.js @@ -12,11 +12,11 @@ openerp.web.list_editable = function (instance) { var self = this; this._super.apply(this, arguments); - this.editor = this.makeEditor(); + this.editor = this.make_editor(); // Stores records of {field, cell}, allows for re-rendering fields // depending on cell state during and after resize events this.fields_for_resize = []; - instance.web.bus.on('resize', this, this.resizeFields); + instance.web.bus.on('resize', this, this.resize_fields); $(this.groups).bind({ 'edit': function (e, id, dataset) { @@ -39,7 +39,7 @@ openerp.web.list_editable = function (instance) { }); }, destroy: function () { - instance.web.bus.off('resize', this, this.resizeFields); + instance.web.bus.off('resize', this, this.resize_fields); this._super(); }, /** @@ -86,7 +86,7 @@ openerp.web.list_editable = function (instance) { if (this.options.editable) { this.$element.find('table:first').show(); this.$element.find('.oe_view_nocontent').remove(); - this.startEdition(); + this.start_edition(); } else { this._super(); } @@ -103,24 +103,24 @@ openerp.web.list_editable = function (instance) { // FIXME: any hook available to ensure this is only done once? this.$buttons .off('click', '.oe_list_save') - .on('click', '.oe_list_save', this.proxy('saveEdition')) + .on('click', '.oe_list_save', this.proxy('save_edition')) .off('click', '.oe_list_discard') .on('click', '.oe_list_discard', function (e) { e.preventDefault(); - self.cancelEdition(); + self.cancel_edition(); }); this.$element .off('click', 'tbody td:not(.oe_list_field_cell)') .on('click', 'tbody td:not(.oe_list_field_cell)', function () { - if (!self.editor.isEditing()) { - self.startEdition(); + if (!self.editor.is_editing()) { + self.start_edition(); } }); // Editor is not restartable due to formview not being // restartable - this.editor = this.makeEditor(); + this.editor = this.make_editor(); var editor_ready = this.editor.prependTo(this.$element) - .then(this.proxy('setupEvents')); + .then(this.proxy('setup_events')); return $.when(result, editor_ready); } @@ -132,13 +132,13 @@ openerp.web.list_editable = function (instance) { * * @return {instance.web.list.Editor} */ - makeEditor: function () { + make_editor: function () { return new instance.web.list.Editor(this); }, do_button_action: function () { var self = this, args = arguments; - this.ensureSaved().then(function () { - self.handleButton.apply(self, args); + this.ensure_saved().then(function () { + self.handle_button.apply(self, args); }); }, /** @@ -149,11 +149,11 @@ openerp.web.list_editable = function (instance) { * * @returns {$.Deferred} */ - ensureSaved: function () { - if (!this.editor.isEditing()) { + ensure_saved: function () { + if (!this.editor.is_editing()) { return $.when(); } - return this.saveEdition(); + return this.save_edition(); }, /** * Set up the edition of a record of the list view "inline" @@ -161,7 +161,7 @@ openerp.web.list_editable = function (instance) { * @param {instance.web.list.Record} [record] record to edit, leave empty to create a new record * @return {jQuery.Deferred} */ - startEdition: function (record) { + start_edition: function (record) { var self = this; var item = false; if (record) { @@ -174,14 +174,14 @@ openerp.web.list_editable = function (instance) { .each(function (field) { attrs[field] = false; }); record = new instance.web.list.Record(attrs); this.records.add(record, { - at: this.isPrependOnCreate() ? 0 : null}); + at: this.prepends_on_create() ? 0 : null}); } - var $recordRow = this.groups.getRowFor(record); - var cells = this.getCellsFor($recordRow); + var $recordRow = this.groups.get_row_for(record); + var cells = this.get_cells_for($recordRow); - return this.ensureSaved().pipe(function () { + return this.ensure_saved().pipe(function () { self.fields_for_resize.splice(0, self.fields_for_resize.length); - return self.withEvent('edit', { + return self.with_event('edit', { record: record.attributes, cancel: false }, function () { @@ -197,13 +197,13 @@ openerp.web.list_editable = function (instance) { self.fields_for_resize.push({field: field, cell: cell}); }).pipe(function () { $recordRow.addClass('oe_edition'); - self.resizeFields(); + self.resize_fields(); return record.attributes; }); }); }); }, - getCellsFor: function ($row) { + get_cells_for: function ($row) { var cells = {}; $row.children('td').each(function (index, el) { cells[el.getAttribute('data-field')] = el @@ -214,11 +214,11 @@ openerp.web.list_editable = function (instance) { * If currently editing a row, resizes all registered form fields based * on the corresponding row cell */ - resizeFields: function () { - if (!this.editor.isEditing()) { return; } + resize_fields: function () { + if (!this.editor.is_editing()) { return; } for(var i=0, len=this.fields_for_resize.length; i jQuery(tr) | null`` has been + * A new method ``get_row_for(record) -> jQuery(tr) | null`` has been added to both ListView.List and ListView.Group, it can be called from the list view to get the table row matching a record (if such a row exists). -* ``ListView#ensure_saved`` has been re-capitalized to - :js:func:`~openerp.web.ListView.ensureSaved` - * :js:func:`~openerp.web.ListView.do_button_action`'s core behavior has been split away to - :js:func:`~openerp.web.ListView.handleButton`. This allows bypassing + :js:func:`~openerp.web.ListView.handle_button`. This allows bypassing overrides of :js:func:`~openerp.web.ListView.do_button_action` in a parent class. - Ideally, :js:func:`~openerp.web.ListView.handleButton` should not be + Ideally, :js:func:`~openerp.web.ListView.handle_button` should not be overridden. * Modifiers handling has been improved (all modifiers information From c2e7e54fe322dd1e8fa9701305f21cec415b7e02 Mon Sep 17 00:00:00 2001 From: Raphael Collet Date: Tue, 17 Jul 2012 17:24:28 +0200 Subject: [PATCH 210/349] [FIX] base_calendar: make all-day events start at 00:00:00 in the user's timezone bzr revid: rco@openerp.com-20120717152428-91wl4cqqxwgjn962 --- addons/base_calendar/base_calendar.py | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/addons/base_calendar/base_calendar.py b/addons/base_calendar/base_calendar.py index 5fc38c884da..918ab97990a 100644 --- a/addons/base_calendar/base_calendar.py +++ b/addons/base_calendar/base_calendar.py @@ -941,16 +941,19 @@ class calendar_event(osv.osv): duration = 1.00 value['duration'] = duration - if allday: # For all day event - value = {'duration': 24.0} - duration = 24.0 - if start_date: - start = datetime.strptime(start_date, "%Y-%m-%d %H:%M:%S") - start_date = datetime.strftime(datetime(start.year, start.month, start.day, 0,0,0), "%Y-%m-%d %H:%M:%S") - value['date'] = start_date - - start = datetime.strptime(start_date, "%Y-%m-%d %H:%M:%S") + if allday: # For all day event + duration = 24.0 + value['duration'] = duration + # change start_date's time to 00:00:00 in the user's timezone + user = self.pool.get('res.users').browse(cr, uid, uid) + tz = pytz.timezone(user.context_tz) if user.context_tz else pytz.utc + start = pytz.utc.localize(start).astimezone(tz) # convert start in user's timezone + start = start.replace(hour=0, minute=0, second=0) # change start's time to 00:00:00 + start = start.astimezone(pytz.utc) # convert start back to utc + start_date = start.strftime("%Y-%m-%d %H:%M:%S") + value['date'] = start_date + if end_date and not duration: end = datetime.strptime(end_date, "%Y-%m-%d %H:%M:%S") diff = end - start From 7e9a1f13b0d7c3b5e78b18ab0cbf78fa442624ed Mon Sep 17 00:00:00 2001 From: "Divyesh Makwana (Open ERP)" Date: Wed, 18 Jul 2012 11:12:59 +0530 Subject: [PATCH 211/349] [FIX] base_calendar : TypeError: strptime() argument 1 must be string, not bool. bzr revid: mdi@tinyerp.com-20120718054259-cve7ms8krk19uw8o --- addons/base_calendar/base_calendar.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/addons/base_calendar/base_calendar.py b/addons/base_calendar/base_calendar.py index 918ab97990a..b51f3cbd0b9 100644 --- a/addons/base_calendar/base_calendar.py +++ b/addons/base_calendar/base_calendar.py @@ -1028,8 +1028,8 @@ class calendar_event(osv.osv): 'id': fields.integer('ID', readonly=True), 'sequence': fields.integer('Sequence'), 'name': fields.char('Description', size=64, required=False, states={'done': [('readonly', True)]}), - 'date': fields.datetime('Date', states={'done': [('readonly', True)]}), - 'date_deadline': fields.datetime('Deadline', states={'done': [('readonly', True)]}), + 'date': fields.datetime('Date', required=True, states={'done': [('readonly', True)]}), + 'date_deadline': fields.datetime('Deadline', required=True, states={'done': [('readonly', True)]}), 'create_date': fields.datetime('Created', readonly=True), 'duration': fields.float('Duration', states={'done': [('readonly', True)]}), 'description': fields.text('Description', states={'done': [('readonly', True)]}), From 102049d6b0f6c7c29d0eeb140630fcfe03fb5f53 Mon Sep 17 00:00:00 2001 From: "Divyesh Makwana (Open ERP)" Date: Wed, 18 Jul 2012 12:25:11 +0530 Subject: [PATCH 212/349] [IMP] stock : Traceability section must go to tracking lot group. bzr revid: mdi@tinyerp.com-20120718065511-dfdfc59cb8ivt5j0 --- addons/stock/stock_view.xml | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/addons/stock/stock_view.xml b/addons/stock/stock_view.xml index 81484e0f5a3..f0f0e989e87 100644 --- a/addons/stock/stock_view.xml +++ b/addons/stock/stock_view.xml @@ -1268,23 +1268,22 @@ - -
+ t-att-data-field="column.id" + > + -
- -
@@ -652,10 +653,10 @@ - + + - - From 9096f2c45c3c9c12486eed2dd273aeb03441cb68 Mon Sep 17 00:00:00 2001 From: Xavier Morel Date: Wed, 18 Jul 2012 15:46:07 +0200 Subject: [PATCH 218/349] [ADD] reimplement o2m's cancel-on-blur when no alteration has been done by the user to the row being edited (new or not) bzr revid: xmo@openerp.com-20120718134607-bukj6c5lysmqeer3 --- addons/web/static/src/js/view_form.js | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/addons/web/static/src/js/view_form.js b/addons/web/static/src/js/view_form.js index 948b3a73913..92faa3d7d15 100644 --- a/addons/web/static/src/js/view_form.js +++ b/addons/web/static/src/js/view_form.js @@ -3331,13 +3331,20 @@ instance.web.form.One2ManyListView = instance.web.ListView.extend({ /** * Handles blurring of the nested form (saves the currently edited row), * unless the flag to ignore the event is set to ``true`` + * + * Makes the internal form go away */ _on_form_blur: function () { if (this.__ignore_blur) { this.__ignore_blur = false; return; } - this.save_edition(); + // FIXME: why isn't there an API for this? + if (this.editor.form.$element.hasClass('oe_form_dirty')) { + this.save_edition(); + return; + } + this.cancel_edition(); }, keyup_ENTER: function () { // blurring caused by hitting the [Return] key, should skip the From 03dd20254e2c62b8290f9b329bde256e92fcc3cd Mon Sep 17 00:00:00 2001 From: Xavier Morel Date: Wed, 18 Jul 2012 16:01:31 +0200 Subject: [PATCH 219/349] [IMP] use 'Save' as label of the button to save an editable list row bzr revid: xmo@openerp.com-20120718140131-eop88n524hwvrguw --- addons/web/static/src/xml/base.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/web/static/src/xml/base.xml b/addons/web/static/src/xml/base.xml index 6d0d4a9ea7d..94b76c170ea 100644 --- a/addons/web/static/src/xml/base.xml +++ b/addons/web/static/src/xml/base.xml @@ -668,7 +668,7 @@ + type="button">Save discard From e72f791b1321fb6d4496488ccf062ff92f710010 Mon Sep 17 00:00:00 2001 From: Minh Tran Date: Wed, 18 Jul 2012 16:27:08 +0200 Subject: [PATCH 220/349] improved style of kanban vignette dropdown menu bzr revid: mit@openerp.com-20120718142708-5okzuclspou6khot --- addons/web/static/src/css/base.css | 2 +- addons/web/static/src/css/base.sass | 2 +- addons/web_kanban/static/src/css/kanban.css | 19 +++++++------------ addons/web_kanban/static/src/css/kanban.sass | 19 ++++++++----------- 4 files changed, 17 insertions(+), 25 deletions(-) diff --git a/addons/web/static/src/css/base.css b/addons/web/static/src/css/base.css index 0a3d24d41f4..8ee9bad823c 100644 --- a/addons/web/static/src/css/base.css +++ b/addons/web/static/src/css/base.css @@ -599,6 +599,7 @@ float: none; display: block; position: relative; + padding: 2px 12px; } .openerp .oe_dropdown_menu > li:hover { background-color: #f0f0fa; @@ -615,7 +616,6 @@ .openerp .oe_dropdown_menu > li > a { white-space: nowrap; display: block; - padding: 4px 15px; color: #4c4c4c; text-decoration: none; } diff --git a/addons/web/static/src/css/base.sass b/addons/web/static/src/css/base.sass index fb67945a02d..fe1e8cfe8d2 100644 --- a/addons/web/static/src/css/base.sass +++ b/addons/web/static/src/css/base.sass @@ -483,10 +483,10 @@ $sheet-max-width: 860px float: none display: block position: relative + padding: 2px 12px > a white-space: nowrap display: block - padding: 4px 15px color: #4c4c4c text-decoration: none &:hover diff --git a/addons/web_kanban/static/src/css/kanban.css b/addons/web_kanban/static/src/css/kanban.css index 5a7c1b84067..51cdc568a1e 100644 --- a/addons/web_kanban/static/src/css/kanban.css +++ b/addons/web_kanban/static/src/css/kanban.css @@ -359,6 +359,9 @@ .openerp .oe_kanban_view .oe_kanban_card .oe_dropdown_kanban { margin-top: 4px; } +.openerp .oe_kanban_view .oe_kanban_card .oe_dropdown_kanban .oe_kanban_project_times li { + float: left; +} .openerp .oe_kanban_view .oe_kanban_star { float: left; position: inline-block; @@ -401,9 +404,6 @@ position: relative; top: 2px; } -.openerp .oe_kanban_view .oe_kanban_project_times li { - float: left; -} .openerp .oe_kanban_view .oe_kanban_status { position: relative; top: 4px; @@ -471,30 +471,25 @@ visibility: hidden; } .openerp .oe_kanban_view .oe_kanban_colorpicker { - padding: 3px 6px; white-space: nowrap; } .openerp .oe_kanban_view .oe_kanban_colorpicker li { float: left; + margin: 0; + padding: 0; } .openerp .oe_kanban_view .oe_kanban_colorpicker li a { display: inline-block; - width: 18px; - height: 18px; + width: 16px; + height: 16px; border: 1px solid white; } .openerp .oe_kanban_view .oe_kanban_colorpicker li a:hover { border: 1px solid gray !important; } .openerp .oe_kanban_view .oe_kanban_colorpicker li:first-child a { - margin-top: 1px; - height: 16px; border: 1px solid #cccccc; } -.openerp .oe_kanban_view .oe_kanban_colorpicker li:first-child a:hover { - margin-top: 0px; - height: 18px; -} .openerp .oe_kanban_view .oe_kanban_color_0 { background-color: white; } diff --git a/addons/web_kanban/static/src/css/kanban.sass b/addons/web_kanban/static/src/css/kanban.sass index cea95f2ce53..6478ea5b213 100644 --- a/addons/web_kanban/static/src/css/kanban.sass +++ b/addons/web_kanban/static/src/css/kanban.sass @@ -307,6 +307,10 @@ text-decoration: none .oe_dropdown_kanban margin-top: 4px + .oe_kanban_project_times + li + float: left + .oe_kanban_star float: left position: inline-block @@ -337,9 +341,6 @@ position: relative top: 2px - .oe_kanban_project_times li - float: left - .oe_kanban_status position: relative top: 4px @@ -387,24 +388,20 @@ // }}} // KanbanColorPicker {{{ .oe_kanban_colorpicker - padding: 3px 6px white-space: nowrap .oe_kanban_colorpicker li float: left + margin: 0 + padding: 0 a display: inline-block - width: 18px - height: 18px + width: 16px + height: 16px border: 1px solid white a:hover border: 1px solid gray !important .oe_kanban_colorpicker li:first-child a - margin-top: 1px - height: 16px border: 1px solid #ccc - &:hover - margin-top: 0px - height: 18px // }}} // KanbanColors {{{ .oe_kanban_color_0 From 8632675b82ed1b4cc50a3a48b02fb40dd316d3d6 Mon Sep 17 00:00:00 2001 From: Minh Tran Date: Wed, 18 Jul 2012 16:35:39 +0200 Subject: [PATCH 221/349] re alignment of dropdown menu bzr revid: mit@openerp.com-20120718143539-0b1abwzq24f66s50 --- addons/web/static/src/css/base.css | 4 ++-- addons/web/static/src/css/base.sass | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/addons/web/static/src/css/base.css b/addons/web/static/src/css/base.css index 8ee9bad823c..e96bb2666f5 100644 --- a/addons/web/static/src/css/base.css +++ b/addons/web/static/src/css/base.css @@ -584,7 +584,7 @@ z-index: 1; border: 1px solid #afafb6; background: white; - padding: 6px 0; + padding: 4px 0; min-width: 140px; text-align: left; -moz-border-radius: 3px; @@ -599,7 +599,7 @@ float: none; display: block; position: relative; - padding: 2px 12px; + padding: 2px 8px; } .openerp .oe_dropdown_menu > li:hover { background-color: #f0f0fa; diff --git a/addons/web/static/src/css/base.sass b/addons/web/static/src/css/base.sass index fe1e8cfe8d2..d860fc69189 100644 --- a/addons/web/static/src/css/base.sass +++ b/addons/web/static/src/css/base.sass @@ -470,7 +470,7 @@ $sheet-max-width: 860px z-index: 1 border: 1px solid #afafb6 background: white - padding: 6px 0 + padding: 4px 0 min-width: 140px text-align: left @include radius(3px) @@ -483,7 +483,7 @@ $sheet-max-width: 860px float: none display: block position: relative - padding: 2px 12px + padding: 2px 8px > a white-space: nowrap display: block From 06104ba553702b16878d52c5b8ab089355216a5e Mon Sep 17 00:00:00 2001 From: Xavier Morel Date: Thu, 19 Jul 2012 10:23:52 +0200 Subject: [PATCH 222/349] [FIX] shitty undoc flag so saving a form doesn't forget/miss a row being edited bzr revid: xmo@openerp.com-20120719082352-pqq02u03fo09rcwe --- addons/web/static/src/js/view_form.js | 1 + 1 file changed, 1 insertion(+) diff --git a/addons/web/static/src/js/view_form.js b/addons/web/static/src/js/view_form.js index 92faa3d7d15..9e3db4f1b05 100644 --- a/addons/web/static/src/js/view_form.js +++ b/addons/web/static/src/js/view_form.js @@ -3236,6 +3236,7 @@ instance.web.form.One2ManyListView = instance.web.ListView.extend({ if (!form.$element.is('.oe_form_dirty')) { return true; } + this.o2m._dirty_flag = true; // Otherwise validate internal form return _(form.fields).chain() From 50267e2995be46f81ece3a4dafffec7d7f7dfcf3 Mon Sep 17 00:00:00 2001 From: Raphael Collet Date: Thu, 19 Jul 2012 11:03:00 +0200 Subject: [PATCH 223/349] [IMP] in partner form view, allow to quick create titles (shortcut not required) bzr revid: rco@openerp.com-20120719090300-suhzk3s6a1zaqico --- openerp/addons/base/res/res_partner.py | 7 +++++-- openerp/addons/base/res/res_partner_view.xml | 1 - 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/openerp/addons/base/res/res_partner.py b/openerp/addons/base/res/res_partner.py index 2165c8ad16d..bef82825723 100644 --- a/openerp/addons/base/res/res_partner.py +++ b/openerp/addons/base/res/res_partner.py @@ -103,12 +103,15 @@ class res_partner_category(osv.osv): class res_partner_title(osv.osv): _name = 'res.partner.title' + _order = 'name' _columns = { 'name': fields.char('Title', required=True, size=46, translate=True), - 'shortcut': fields.char('Abbreviation', required=True, size=16, translate=True), + 'shortcut': fields.char('Abbreviation', size=16, translate=True), 'domain': fields.selection([('partner','Partner'),('contact','Contact')], 'Domain', required=True, size=24) } - _order = 'name' + _defaults = { + 'domain': 'contact', + } def _lang_get(self, cr, uid, context=None): lang_pool = self.pool.get('res.lang') diff --git a/openerp/addons/base/res/res_partner_view.xml b/openerp/addons/base/res/res_partner_view.xml index 5d6ed868911..da89d6fd0d6 100644 --- a/openerp/addons/base/res/res_partner_view.xml +++ b/openerp/addons/base/res/res_partner_view.xml @@ -31,7 +31,6 @@ - From 48dfecb59f2c5fc0177bd2244d118f2164632e80 Mon Sep 17 00:00:00 2001 From: Raphael Collet Date: Thu, 19 Jul 2012 11:11:46 +0200 Subject: [PATCH 224/349] [IMP] in partner form, make the tab 'Contacts' visible only for companies bzr revid: rco@openerp.com-20120719091146-4m4kzmbzh1g6pjgb --- openerp/addons/base/res/res_partner_view.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/openerp/addons/base/res/res_partner_view.xml b/openerp/addons/base/res/res_partner_view.xml index da89d6fd0d6..e64fcb3d0dd 100644 --- a/openerp/addons/base/res/res_partner_view.xml +++ b/openerp/addons/base/res/res_partner_view.xml @@ -154,7 +154,7 @@ - + From ac5dc58367d9bed5a576baaa7b803a67b5d00d07 Mon Sep 17 00:00:00 2001 From: Xavier Morel Date: Thu, 19 Jul 2012 11:57:42 +0200 Subject: [PATCH 225/349] [IMP] focus the clicked field when starting a row edition by clicking on a cell bzr revid: xmo@openerp.com-20120719095742-lps9xjsrvhn5fnlh --- .../web/static/src/js/view_list_editable.js | 54 +++++++++++++------ doc/list-view.rst | 22 +++++++- 2 files changed, 58 insertions(+), 18 deletions(-) diff --git a/addons/web/static/src/js/view_list_editable.js b/addons/web/static/src/js/view_list_editable.js index 052a471f0f3..56df125c98b 100644 --- a/addons/web/static/src/js/view_list_editable.js +++ b/addons/web/static/src/js/view_list_editable.js @@ -165,9 +165,11 @@ openerp.web.list_editable = function (instance) { * Set up the edition of a record of the list view "inline" * * @param {instance.web.list.Record} [record] record to edit, leave empty to create a new record + * @param {Object} [options] + * @param {String} [options.focus_field] field to focus at start of edition * @return {jQuery.Deferred} */ - start_edition: function (record) { + start_edition: function (record, options) { var self = this; var item = false; if (record) { @@ -194,14 +196,14 @@ openerp.web.list_editable = function (instance) { return self.editor.edit(item, function (field_name, field) { var cell = cells[field_name]; if (!cell || field.get('effective_readonly')) { - // Readonly fields can just remain the list's, form's - // usually don't have backgrounds &al + // Readonly fields can just remain the list's, + // form's usually don't have backgrounds &al field.set({invisible: true}); return; } self.fields_for_resize.push({field: field, cell: cell}); - }).pipe(function () { + }, options).pipe(function () { $recordRow.addClass('oe_edition'); self.resize_fields(); return record.attributes; @@ -558,7 +560,33 @@ openerp.web.list_editable = function (instance) { throw new Error("is_editing's state filter must be either `new` or" + " `edit` if provided"); }, - edit: function (record, configureField) { + _focus_setup: function (focus_field) { + var form = this.form; + + var field; + // If a field to focus was specified + if (focus_field + // Is actually in the form + && (field = form.fields[focus_field]) + // And is visible + && field.$element.is(':visible')) { + // focus it + field.focus(); + return; + } + + _(form.fields_order).detect(function (name) { + // look for first visible field in fields_order, focus it + var field = form.fields[name]; + if (!field.$element.is(':visible')) { + return false; + } + field.focus(); + // Stop as soon as a field got focused + return true; + }); + }, + edit: function (record, configureField, options) { // TODO: specify sequence of edit calls var self = this; var form = self.form; @@ -573,16 +601,7 @@ openerp.web.list_editable = function (instance) { _(form.fields).each(function (field, name) { configureField(name, field); }); - // TODO: actually focus clicked field (if editable) - _(form.fields_order).detect(function (name) { - // look for first visible field in fields_order, focus it - var field = form.fields[name]; - if (!field.$element.is(':visible')) { - return false; - } - field.focus(); - return true; - }); + self._focus_setup(options && options.focus_field); return form; }); }, @@ -627,7 +646,10 @@ openerp.web.list_editable = function (instance) { return this._super.apply(this, arguments); } var record_id = $(event.currentTarget).data('id'); - this.view.start_edition(record_id ? this.records.get(record_id) : null); + this.view.start_edition( + record_id ? this.records.get(record_id) : null, { + focus_field: $(event.target).data('field') + }); }, /** * If a row mapping to the record (@data-id matching the record's id or diff --git a/doc/list-view.rst b/doc/list-view.rst index ebb5f0ffe4d..0d67c27f963 100644 --- a/doc/list-view.rst +++ b/doc/list-view.rst @@ -131,7 +131,7 @@ Interaction Methods rejected if a pending edition could not be saved (e.g. validation failure) -.. js:function:: openerp.web.ListView.start_edition([record]) +.. js:function:: openerp.web.ListView.start_edition([record][, options]) Starts editing the provided record inline, through an overlay form view of editable fields in the record. @@ -142,7 +142,9 @@ Interaction Methods This method resolves any pending edition when invoked, before starting a new edition. + :param record: record to edit, or null to create a new record :type record: :js:class:`~openerp.web.list.Record` + :param EditOptions options: :returns: delegate to the form used for the edition .. js:function:: openerp.web.ListView.save_edition @@ -303,7 +305,7 @@ formview, delegating instead to its :type record_state: String :rtype: Boolean - .. js:function:: openerp.web.list.Editor.edit(record, configureField) + .. js:function:: openerp.web.list.Editor.edit(record, configureField[, options]) Loads the provided record into the internal form view and displays the form view. @@ -320,6 +322,7 @@ formview, delegating instead to its method do some last-minute configuration of form fields. :type configureField: Function + :param EditOptions options: :returns: jQuery delegate to the form object .. js:function:: openerp.web.list.Editor.save @@ -391,6 +394,21 @@ formview, delegating instead to its dataset (instead of appended) :rtype: Boolean + +.. js:class:: EditOptions + + Options object optionally passed into a method starting an edition + to configure its setup and behavior + + .. js:attribute:: focus_field + + Name of the field to set focus on after setting up the edition + of the record. + + If this option is not provided, or the requested field can not + be focused (invisible, readonly or not in the view), the first + visible non-readonly field is focused. + Changes from 6.1 ---------------- From cf6af909fb8f36f0a4ced1a3b61379d9d4899e34 Mon Sep 17 00:00:00 2001 From: Minh Tran Date: Thu, 19 Jul 2012 17:28:04 +0200 Subject: [PATCH 226/349] fixed visual glitch in topbar dropdown menu bzr revid: mit@openerp.com-20120719152804-zcxvuaicpzfubdv1 --- addons/web/static/src/css/base.css | 3 ++- addons/web/static/src/css/base.sass | 7 ++++--- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/addons/web/static/src/css/base.css b/addons/web/static/src/css/base.css index e96bb2666f5..12f0de62b8c 100644 --- a/addons/web/static/src/css/base.css +++ b/addons/web/static/src/css/base.css @@ -945,11 +945,12 @@ } .openerp .oe_topbar .oe_dropdown_menu li { float: none; + padding: 3px 12px; } .openerp .oe_topbar .oe_dropdown_menu li a { color: #eeeeee; } -.openerp .oe_topbar .oe_dropdown_menu li a:hover { +.openerp .oe_topbar .oe_dropdown_menu li:hover { background-color: #292929; background-image: -webkit-gradient(linear, left top, left bottom, from(#292929), to(#191919)); background-image: -webkit-linear-gradient(top, #292929, #191919); diff --git a/addons/web/static/src/css/base.sass b/addons/web/static/src/css/base.sass index d860fc69189..58fd8734fa7 100644 --- a/addons/web/static/src/css/base.sass +++ b/addons/web/static/src/css/base.sass @@ -735,11 +735,12 @@ $sheet-max-width: 860px @include background-clip() li float: none + padding: 3px 12px a color: #eee - &:hover - @include vertical-gradient(#292929, #191919) - @include box-shadow(none) + &:hover + @include vertical-gradient(#292929, #191919) + @include box-shadow(none) // }}} // Webclient.leftbar {{{ From bd538220f36bd7b4c58c158ed3c831bd6b510af6 Mon Sep 17 00:00:00 2001 From: Minh Tran Date: Thu, 19 Jul 2012 17:36:05 +0200 Subject: [PATCH 227/349] fixed offset of topbar dropdown menu bzr revid: mit@openerp.com-20120719153605-ivanvuvl3mv88bl3 --- addons/web/static/src/js/chrome.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/web/static/src/js/chrome.js b/addons/web/static/src/js/chrome.js index 094e2f184e6..2ab4b61d9c0 100644 --- a/addons/web/static/src/js/chrome.js +++ b/addons/web/static/src/js/chrome.js @@ -910,7 +910,7 @@ instance.web.WebClient = instance.web.Widget.extend({ var doc_width = $(document).width(); var offset = $menu.offset(); var menu_width = $menu.width(); - var x = doc_width - offset.left - menu_width - 15; + var x = doc_width - offset.left - menu_width - 2; if (x < 0) { $menu.offset({ left: offset.left + x }).width(menu_width); } From 3c1dd6c0c2a985eebbbfb99b18a98f1151cdfd6d Mon Sep 17 00:00:00 2001 From: Minh Tran Date: Thu, 19 Jul 2012 17:58:37 +0200 Subject: [PATCH 228/349] fixed cursor too close to search icon in searchview bzr revid: mit@openerp.com-20120719155837-g64bmhzesl7ode8t --- addons/web/static/src/css/base.css | 2 +- addons/web/static/src/css/base.sass | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/addons/web/static/src/css/base.css b/addons/web/static/src/css/base.css index 12f0de62b8c..7c8085046fc 100644 --- a/addons/web/static/src/css/base.css +++ b/addons/web/static/src/css/base.css @@ -1438,7 +1438,7 @@ outline: none; } .openerp .oe_searchview .oe_searchview_facets .oe_searchview_input { - padding: 0 3px; + padding: 0 0 0 6px; } .openerp .oe_searchview .oe_searchview_facets .oe_searchview_facet { position: relative; diff --git a/addons/web/static/src/css/base.sass b/addons/web/static/src/css/base.sass index 58fd8734fa7..b3ff70b72bd 100644 --- a/addons/web/static/src/css/base.sass +++ b/addons/web/static/src/css/base.sass @@ -1127,7 +1127,7 @@ $sheet-max-width: 860px &:focus outline: none .oe_searchview_input - padding: 0 3px + padding: 0 0 0 6px .oe_searchview_facet position: relative cursor: pointer From bff386ea36d2d24c21b16d4ed17db0c6d039bd3d Mon Sep 17 00:00:00 2001 From: Minh Tran Date: Thu, 19 Jul 2012 18:04:56 +0200 Subject: [PATCH 229/349] fixed alignment of 'add to dashboard' button in searchview bzr revid: mit@openerp.com-20120719160456-vp9hip9f67d1ij84 --- addons/web/static/src/css/base.css | 6 +++--- addons/web/static/src/css/base.sass | 14 +++++++------- addons/web/static/src/xml/base.xml | 4 ++-- 3 files changed, 12 insertions(+), 12 deletions(-) diff --git a/addons/web/static/src/css/base.css b/addons/web/static/src/css/base.css index 7c8085046fc..eda3a996d23 100644 --- a/addons/web/static/src/css/base.css +++ b/addons/web/static/src/css/base.css @@ -1601,14 +1601,14 @@ .openerp .oe_searchview .oe_searchview_drawer .oe_searchview_section li:hover { background-color: #f0f0fa; } -.openerp .oe_searchview .oe_searchview_drawer .oe_searchview_section form { +.openerp .oe_searchview .oe_searchview_drawer form { margin-left: 12px; } -.openerp .oe_searchview .oe_searchview_drawer .oe_searchview_section form p { +.openerp .oe_searchview .oe_searchview_drawer form p { margin: 4px 0; line-height: 18px; } -.openerp .oe_searchview .oe_searchview_drawer .oe_searchview_section form button { +.openerp .oe_searchview .oe_searchview_drawer form button { margin: 0 0 8px 0; } .openerp .oe_searchview .oe_searchview_drawer .oe_searchview_custom { diff --git a/addons/web/static/src/css/base.sass b/addons/web/static/src/css/base.sass index b3ff70b72bd..dbd3d30f453 100644 --- a/addons/web/static/src/css/base.sass +++ b/addons/web/static/src/css/base.sass @@ -1249,13 +1249,13 @@ $sheet-max-width: 860px // after oe_selected so background color is not overridden &:hover background-color: $hover-background - form - margin-left: 12px - p - margin: 4px 0 - line-height: 18px - button - margin: 0 0 8px 0 + form + margin-left: 12px + p + margin: 4px 0 + line-height: 18px + button + margin: 0 0 8px 0 .oe_searchview_custom padding: 0 8px 8px 8px form diff --git a/addons/web/static/src/xml/base.xml b/addons/web/static/src/xml/base.xml index 0ade5dd4d89..1bbffe3e2a7 100644 --- a/addons/web/static/src/xml/base.xml +++ b/addons/web/static/src/xml/base.xml @@ -1392,8 +1392,8 @@

Add to Dashboard

- - +

+
From 75fb9fbe9137b81fcc1a29eaa31850d2fc4a1a80 Mon Sep 17 00:00:00 2001 From: "Mayur Maheshwari (OpenERP)" Date: Fri, 20 Jul 2012 12:11:11 +0530 Subject: [PATCH 230/349] [IMP]all: improve some typo in module description bzr revid: mma@tinyerp.com-20120720064111-216mdw2wjrwavhe4 --- addons/account/__openerp__.py | 2 +- addons/event_moodle/__openerp__.py | 10 +++++----- addons/hr_payroll_account/__openerp__.py | 2 +- addons/hr_timesheet_sheet/__openerp__.py | 2 +- addons/l10n_fr_hr_payroll/__openerp__.py | 4 ++-- addons/l10n_uk/__openerp__.py | 2 +- addons/membership/__openerp__.py | 2 +- addons/purchase/__openerp__.py | 2 +- addons/users_ldap/__openerp__.py | 2 +- 9 files changed, 14 insertions(+), 14 deletions(-) diff --git a/addons/account/__openerp__.py b/addons/account/__openerp__.py index dae0485d709..e1b9078ec3f 100644 --- a/addons/account/__openerp__.py +++ b/addons/account/__openerp__.py @@ -29,7 +29,7 @@ Accounting and Financial Management. Financial and accounting module that covers: -------------------------------------------- - * General accountings + * General Accounting * Cost/Analytic accounting * Third party accounting * Taxes management diff --git a/addons/event_moodle/__openerp__.py b/addons/event_moodle/__openerp__.py index bd0ec2e7785..14f6de8668d 100644 --- a/addons/event_moodle/__openerp__.py +++ b/addons/event_moodle/__openerp__.py @@ -28,8 +28,8 @@ Configure your moodle server. ============================= -With this module you are able to connect your OpenERP with a moodle plateform. -This module will create courses and students automatically in your moodle plateform +With this module you are able to connect your OpenERP with a moodle platform. +This module will create courses and students automatically in your moodle platform to avoid wasting time. Now you have a simple way to create training or courses with OpenERP and moodle. @@ -38,13 +38,13 @@ STEPS TO CONFIGURE: 1. Activate web service in moodle. ---------------------------------- ->site administration >plugins >web sevices >manage protocols activate the xmlrpc web service +>site administration >plugins >web services >manage protocols activate the xmlrpc web service ->site administration >plugins >web sevices >manage tokens create a token +>site administration >plugins >web services >manage tokens create a token ->site administration >plugins >web sevices >overview activate webservice +>site administration >plugins >web services >overview activate webservice 2. Create confirmation email with login and password. diff --git a/addons/hr_payroll_account/__openerp__.py b/addons/hr_payroll_account/__openerp__.py index 9ea8a10bbb8..f869c93697b 100644 --- a/addons/hr_payroll_account/__openerp__.py +++ b/addons/hr_payroll_account/__openerp__.py @@ -24,7 +24,7 @@ 'version': '1.0', 'category': 'Human Resources', 'description': """ -Generic Payroll system Integrated with Accountings. +Generic Payroll system Integrated with Accounting. =================================================== * Expense Encoding diff --git a/addons/hr_timesheet_sheet/__openerp__.py b/addons/hr_timesheet_sheet/__openerp__.py index 1a3ee5b70bc..d6a727d478d 100644 --- a/addons/hr_timesheet_sheet/__openerp__.py +++ b/addons/hr_timesheet_sheet/__openerp__.py @@ -29,7 +29,7 @@ This module helps you to easily encode and validate timesheet and attendances within the same view. =================================================================================================== - * It will mentain attendances and track (sign in/sign out) events. + * It will maintain attendances and track (sign in/sign out) events. * Track the timesheet lines. Other tabs contains statistics views to help you analyse your diff --git a/addons/l10n_fr_hr_payroll/__openerp__.py b/addons/l10n_fr_hr_payroll/__openerp__.py index fd1f595a7e3..c3b2c332a46 100755 --- a/addons/l10n_fr_hr_payroll/__openerp__.py +++ b/addons/l10n_fr_hr_payroll/__openerp__.py @@ -28,8 +28,8 @@ French Payroll Rules. ===================== - - Configuration of hr_payroll for french localization - - All main contributions rules for french payslip, for 'cadre' and 'non-cadre' + - Configuration of hr_payroll for French localization + - All main contributions rules for French payslip, for 'cadre' and 'non-cadre' - New payslip report TODO : diff --git a/addons/l10n_uk/__openerp__.py b/addons/l10n_uk/__openerp__.py index 19a9747ea6a..444ea2b9dd3 100644 --- a/addons/l10n_uk/__openerp__.py +++ b/addons/l10n_uk/__openerp__.py @@ -24,7 +24,7 @@ 'version': '1.0', 'category': 'Localization/Account Charts', 'description': """ -This is the latest UK OpenERP localisation necesary to run OpenERP accounting +This is the latest UK OpenERP localisation necessary to run OpenERP accounting for UK SME's with: - a CT600-ready chart of accounts - VAT100-ready tax structure diff --git a/addons/membership/__openerp__.py b/addons/membership/__openerp__.py index eae5861e93c..a05240c08e7 100644 --- a/addons/membership/__openerp__.py +++ b/addons/membership/__openerp__.py @@ -30,7 +30,7 @@ This module allows you to manage all operations for managing memberships. It supports different kind of members: * Free member - * Associated member (eg.: a group subscribes to a membership for all subsidiaries) + * Associated member (e.g.: a group subscribes to a membership for all subsidiaries) * Paid members * Special member prices diff --git a/addons/purchase/__openerp__.py b/addons/purchase/__openerp__.py index d90ca351d8e..6b74b3c63d5 100644 --- a/addons/purchase/__openerp__.py +++ b/addons/purchase/__openerp__.py @@ -34,7 +34,7 @@ A supplier invoice is created for the particular purchase order. Dashboard for purchase management that includes: ------------------------------------------------ * Request for Quotations - * Monthly Purchasess by Category + * Monthly Purchases by Category """, 'author': 'OpenERP SA', 'website': 'http://www.openerp.com', diff --git a/addons/users_ldap/__openerp__.py b/addons/users_ldap/__openerp__.py index abb8e3e420e..ba153328af1 100644 --- a/addons/users_ldap/__openerp__.py +++ b/addons/users_ldap/__openerp__.py @@ -40,7 +40,7 @@ LDAP servers, as long as they have unique usernames (usernames need to be unique in OpenERP, even across multiple companies). Anonymous LDAP binding is also supported (for LDAP servers that allow it), by -simpling keeping the LDAP user and password empty in the LDAP configuration. +simply keeping the LDAP user and password empty in the LDAP configuration. This does not allow anonymous authentication for users, it is only for the master LDAP account that is used to verify if a user exists before attempting to authenticate it. From 9bbd6236d91354ec637b46f6a4c44382a312a37f Mon Sep 17 00:00:00 2001 From: Raphael Collet Date: Fri, 20 Jul 2012 10:30:59 +0200 Subject: [PATCH 231/349] [IMP] base: add partner categories in partner kanban view bzr revid: rco@openerp.com-20120720083059-q1bdcupzuge088jf --- openerp/addons/base/__openerp__.py | 3 +- openerp/addons/base/res/res_partner_view.xml | 35 ++++++++++++-------- openerp/addons/base/static/src/js/base.js | 23 +++++++++++++ 3 files changed, 46 insertions(+), 15 deletions(-) create mode 100644 openerp/addons/base/static/src/js/base.js diff --git a/openerp/addons/base/__openerp__.py b/openerp/addons/base/__openerp__.py index 31e237a6a06..fff01e4bffc 100644 --- a/openerp/addons/base/__openerp__.py +++ b/openerp/addons/base/__openerp__.py @@ -96,6 +96,7 @@ 'installable': True, 'auto_install': True, 'certificate': '0076807797149', - "css": [ 'static/src/css/modules.css' ], + 'css': ['static/src/css/modules.css'], + 'js': ['static/src/js/base.js'], } # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/openerp/addons/base/res/res_partner_view.xml b/openerp/addons/base/res/res_partner_view.xml index e64fcb3d0dd..a2185a88e54 100644 --- a/openerp/addons/base/res/res_partner_view.xml +++ b/openerp/addons/base/res/res_partner_view.xml @@ -287,6 +287,7 @@ +
@@ -294,20 +295,26 @@
-

-

-
    -
  • -
  • -
  • at
  • -
  • -
  • -
  • ,
  • -
  • -
  • Tel:
  • -
  • Mobile:
  • -
  • -
+

+
+ + + +
+
diff --git a/openerp/addons/base/static/src/js/base.js b/openerp/addons/base/static/src/js/base.js new file mode 100644 index 00000000000..d4c6fad5ce5 --- /dev/null +++ b/openerp/addons/base/static/src/js/base.js @@ -0,0 +1,23 @@ +openerp.base = function(openerp) { + /* extend kanban to include the names of partner categories in the kanban view of partners */ + openerp.web_kanban.KanbanView.include({ + on_groups_started: function() { + var self = this; + self._super.apply(this, arguments); + if (this.dataset.model === 'res.partner') { + /* Set names for partner categories */ + var category_ids = []; + this.$element.find('.oe_kanban_partner_category').each(function() { + category_ids.push($(this).data('category_id')); + }); + var dataset = new openerp.web.DataSetSearch(this, 'res.partner.category', + self.session.context, [['id', 'in', _.uniq(category_ids)]]); + dataset.read_slice(['id', 'name']).then(function(result) { + _.each(result, function(v, k) { + self.$element.find('.oe_kanban_partner_category[data-category_id=' + v.id + ']').html(v.name); + }); + }); + } + } + }); +}; From 93f24defa8ef90e66cb2d02a83747bb3bbf1ff46 Mon Sep 17 00:00:00 2001 From: Raphael Collet Date: Fri, 20 Jul 2012 10:36:29 +0200 Subject: [PATCH 232/349] [IMP] crm, sale: improve inheritance of partner kanban view bzr revid: rco@openerp.com-20120720083629-c27ye9ufo3r12n19 --- addons/crm/res_partner_view.xml | 7 ++++--- addons/sale/res_partner_view.xml | 5 +++-- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/addons/crm/res_partner_view.xml b/addons/crm/res_partner_view.xml index 26c74427009..d64670b1778 100644 --- a/addons/crm/res_partner_view.xml +++ b/addons/crm/res_partner_view.xml @@ -101,16 +101,17 @@ res.partner kanban + - - + + Opportunities - + Meetings diff --git a/addons/sale/res_partner_view.xml b/addons/sale/res_partner_view.xml index 11ac318b7a7..76f6f3ad816 100644 --- a/addons/sale/res_partner_view.xml +++ b/addons/sale/res_partner_view.xml @@ -24,12 +24,13 @@ res.partner kanban + - - + + Sales From 09a5fbba59097a8c568bf2a4c116fa6ea0507885 Mon Sep 17 00:00:00 2001 From: "Mayur Maheshwari (OpenERP)" Date: Fri, 20 Jul 2012 14:56:53 +0530 Subject: [PATCH 233/349] [IMP]all: improve some tool-tip bzr revid: mma@tinyerp.com-20120720092653-197y2amboq3hv9e5 --- .../account_analytic_default.py | 6 +++--- .../openerp_report_designer/bin/script/Fields.py | 2 +- .../openerp_report_designer/bin/script/Translation.py | 2 +- .../openerp_report_designer/bin/script/modify.py | 6 +++--- addons/document/nodes.py | 2 +- addons/product_margin/product_margin.py | 10 +++++----- 6 files changed, 14 insertions(+), 14 deletions(-) diff --git a/addons/account_analytic_default/account_analytic_default.py b/addons/account_analytic_default/account_analytic_default.py index affc514e203..4fe654adffc 100644 --- a/addons/account_analytic_default/account_analytic_default.py +++ b/addons/account_analytic_default/account_analytic_default.py @@ -31,10 +31,10 @@ class account_analytic_default(osv.osv): _columns = { 'sequence': fields.integer('Sequence', help="Gives the sequence order when displaying a list of analytic distribution"), 'analytic_id': fields.many2one('account.analytic.account', 'Analytic Account'), - 'product_id': fields.many2one('product.product', 'Product', ondelete='cascade', help="Select a product which will use analytic account specified in analytic default (eg. create new customer invoice or Sale order if we select this product, it will automatically take this as an analytic account)"), - 'partner_id': fields.many2one('res.partner', 'Partner', ondelete='cascade', help="Select a partner which will use analytic account specified in analytic default (eg. create new customer invoice or Sale order if we select this partner, it will automatically take this as an analytic account)"), + 'product_id': fields.many2one('product.product', 'Product', ondelete='cascade', help="Select a product which will use analytic account specified in analytic default (e.g. create new customer invoice or Sale order if we select this product, it will automatically take this as an analytic account)"), + 'partner_id': fields.many2one('res.partner', 'Partner', ondelete='cascade', help="Select a partner which will use analytic account specified in analytic default (e.g. create new customer invoice or Sale order if we select this partner, it will automatically take this as an analytic account)"), 'user_id': fields.many2one('res.users', 'User', ondelete='cascade', help="Select a user which will use analytic account specified in analytic default."), - 'company_id': fields.many2one('res.company', 'Company', ondelete='cascade', help="Select a company which will use analytic account specified in analytic default (eg. create new customer invoice or Sale order if we select this company, it will automatically take this as an analytic account)"), + 'company_id': fields.many2one('res.company', 'Company', ondelete='cascade', help="Select a company which will use analytic account specified in analytic default (e.g. create new customer invoice or Sale order if we select this company, it will automatically take this as an analytic account)"), 'date_start': fields.date('Start Date', help="Default start date for this Analytic Account."), 'date_stop': fields.date('End Date', help="Default end date for this Analytic Account."), } diff --git a/addons/base_report_designer/plugin/openerp_report_designer/bin/script/Fields.py b/addons/base_report_designer/plugin/openerp_report_designer/bin/script/Fields.py index 92044f78fe1..e7c2b33ca88 100644 --- a/addons/base_report_designer/plugin/openerp_report_designer/bin/script/Fields.py +++ b/addons/base_report_designer/plugin/openerp_report_designer/bin/script/Fields.py @@ -174,7 +174,7 @@ class Fields(unohelper.Base, XJobExecutor ): self.win.doModalDialog("lstFields",self.sValue) else: - ErrorDialog("Please insert user define field Field-1 or Field-4","Just go to File->Properties->User Define \nField-1 Eg. http://localhost:8069 \nOR \nField-4 Eg. account.invoice") + ErrorDialog("Please insert user define field Field-1 or Field-4","Just go to File->Properties->User Define \nField-1 E.g. http://localhost:8069 \nOR \nField-4 E.g. account.invoice") self.win.endExecute() def lstbox_selected(self,oItemEvent): diff --git a/addons/base_report_designer/plugin/openerp_report_designer/bin/script/Translation.py b/addons/base_report_designer/plugin/openerp_report_designer/bin/script/Translation.py index 73146f1b68a..97e6427ae76 100644 --- a/addons/base_report_designer/plugin/openerp_report_designer/bin/script/Translation.py +++ b/addons/base_report_designer/plugin/openerp_report_designer/bin/script/Translation.py @@ -154,7 +154,7 @@ class AddLang(unohelper.Base, XJobExecutor ): self.win.doModalDialog("lstFields",self.sValue) else: - ErrorDialog("Please insert user define field Field-1 or Field-4","Just go to File->Properties->User Define \nField-1 Eg. http://localhost:8069 \nOR \nField-4 Eg. account.invoice") + ErrorDialog("Please insert user define field Field-1 or Field-4","Just go to File->Properties->User Define \nField-1 E.g. http://localhost:8069 \nOR \nField-4 E.g. account.invoice") self.win.endExecute() def lstbox_selected(self,oItemEvent): diff --git a/addons/base_report_designer/plugin/openerp_report_designer/bin/script/modify.py b/addons/base_report_designer/plugin/openerp_report_designer/bin/script/modify.py index fc3d6672b79..f38424fd614 100644 --- a/addons/base_report_designer/plugin/openerp_report_designer/bin/script/modify.py +++ b/addons/base_report_designer/plugin/openerp_report_designer/bin/script/modify.py @@ -77,7 +77,7 @@ class modify(unohelper.Base, XJobExecutor ): ErrorDialog( "Please insert user define field Field-1", "Just go to File->Properties->User Define \n" - "Field-1 Eg. http://localhost:8069" + "Field-1 E.g. http://localhost:8069" ) exit(1) @@ -108,9 +108,9 @@ class modify(unohelper.Base, XJobExecutor ): ErrorDialog( "Please insert user define field Field-1 or Field-4", "Just go to File->Properties->User Define \n" - "Field-1 Eg. http://localhost:8069 \n" + "Field-1 E.g. http://localhost:8069 \n" "OR \n" - "Field-4 Eg. account.invoice" + "Field-4 E.g. account.invoice" ) exit(1) diff --git a/addons/document/nodes.py b/addons/document/nodes.py index 273be7effa4..b4f423460d7 100644 --- a/addons/document/nodes.py +++ b/addons/document/nodes.py @@ -375,7 +375,7 @@ class node_class(object): could do various things. Should also consider node<->content, dir<->dir moves etc. - Move operations, as instructed from APIs (eg. request from DAV) could + Move operations, as instructed from APIs (e.g. request from DAV) could use this function. """ raise NotImplementedError(repr(self)) diff --git a/addons/product_margin/product_margin.py b/addons/product_margin/product_margin.py index 8f946467384..4c033a4a6ca 100644 --- a/addons/product_margin/product_margin.py +++ b/addons/product_margin/product_margin.py @@ -110,15 +110,15 @@ class product_product(osv.osv): 'purchase_gap' : fields.function(_product_margin, type='float', string='Purchase Gap', multi='product_margin', help="Normal Cost - Total Cost"), 'turnover' : fields.function(_product_margin, type='float', string='Turnover' ,multi='product_margin', - help="Sum of Multification of Invoice price and quantity of Customer Invoices"), + help="Sum of Multiplication of Invoice price and quantity of Customer Invoices"), 'total_cost' : fields.function(_product_margin, type='float', string='Total Cost', multi='product_margin', - help="Sum of Multification of Invoice price and quantity of Supplier Invoices "), + help="Sum of Multiplication of Invoice price and quantity of Supplier Invoices "), 'sale_expected' : fields.function(_product_margin, type='float', string='Expected Sale', multi='product_margin', - help="Sum of Multification of Sale Catalog price and quantity of Customer Invoices"), + help="Sum of Multiplication of Sale Catalog price and quantity of Customer Invoices"), 'normal_cost' : fields.function(_product_margin, type='float', string='Normal Cost', multi='product_margin', - help="Sum of Multification of Cost price and quantity of Supplier Invoices"), + help="Sum of Multiplication of Cost price and quantity of Supplier Invoices"), 'total_margin' : fields.function(_product_margin, type='float', string='Total Margin', multi='product_margin', - help="Turnorder - Standard price"), + help="Turnover - Standard price"), 'expected_margin' : fields.function(_product_margin, type='float', string='Expected Margin', multi='product_margin', help="Expected Sale - Normal Cost"), 'total_margin_rate' : fields.function(_product_margin, type='float', string='Total Margin (%)', multi='product_margin', From d9c5368a2cbe3f19aed1e4be08adcad826207dd0 Mon Sep 17 00:00:00 2001 From: "Divyesh Makwana (Open ERP)" Date: Fri, 20 Jul 2012 15:57:51 +0530 Subject: [PATCH 234/349] [IMP] product : TypeError: The model 'product.product' specifies an unexisting parent class 'mail.thread'. bzr revid: mdi@tinyerp.com-20120720102751-g100uuhvxl0lcr91 --- addons/product/__openerp__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/product/__openerp__.py b/addons/product/__openerp__.py index 9b4d2cadee1..918545aa783 100644 --- a/addons/product/__openerp__.py +++ b/addons/product/__openerp__.py @@ -25,7 +25,7 @@ "version" : "1.1", "author" : "OpenERP SA", 'category': 'Sales Management', - "depends" : ["base", "process", "decimal_precision"], + "depends" : ["base", "process", "decimal_precision", "mail"], "init_xml" : [], "demo_xml" : ["product_demo.xml"], "description": """ From c63ec2c229de7061023b26a334ca89d8388d5945 Mon Sep 17 00:00:00 2001 From: "Divyesh Makwana (Open ERP)" Date: Fri, 20 Jul 2012 16:17:28 +0530 Subject: [PATCH 235/349] [IMP] stock : Added multiple location group to 'location' and manage serial number group to 'serial number'. bzr revid: mdi@tinyerp.com-20120720104728-1tvks4b4pzhsx34d --- addons/stock/wizard/stock_change_product_qty_view.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/addons/stock/wizard/stock_change_product_qty_view.xml b/addons/stock/wizard/stock_change_product_qty_view.xml index e360f5aa025..6713194f90b 100644 --- a/addons/stock/wizard/stock_change_product_qty_view.xml +++ b/addons/stock/wizard/stock_change_product_qty_view.xml @@ -10,8 +10,8 @@ - - + +
From 0e681f8f5e0c803ccf70708408e606767451965e Mon Sep 17 00:00:00 2001 From: Raphael Collet Date: Mon, 23 Jul 2012 18:14:26 +0200 Subject: [PATCH 257/349] [FIX] sale: in create invoice wizard, reintroduce field qtty (used in tests) bzr revid: rco@openerp.com-20120723161426-rwk22j4tm71z863b --- addons/sale/test/manual_order_policy.yml | 2 +- addons/sale/wizard/sale_make_invoice_advance.py | 8 +++++--- addons/sale/wizard/sale_make_invoice_advance.xml | 1 + 3 files changed, 7 insertions(+), 4 deletions(-) diff --git a/addons/sale/test/manual_order_policy.yml b/addons/sale/test/manual_order_policy.yml index bb197763486..505ab0933d0 100644 --- a/addons/sale/test/manual_order_policy.yml +++ b/addons/sale/test/manual_order_policy.yml @@ -16,7 +16,7 @@ ctx = context.copy() ctx.update({"active_model": 'sale.order', "active_ids": [ref("order4")], "active_id":ref("order4")}) order_line = self.pool.get('sale.order.line').browse(cr, uid, ref("line7"), context=context) - pay_id = self.create(cr, uid, {'product_id': order_line.product_id.id, 'amount': order_line.price_subtotal, 'qtty': order_line.product_uom_qty}) + pay_id = self.create(cr, uid, {'advance_payment_method': 'fixed', 'product_id': order_line.product_id.id, 'amount': order_line.price_subtotal, 'qtty': order_line.product_uom_qty}) self.create_invoices(cr, uid, [pay_id], context=ctx) - I check Invoice which made advance diff --git a/addons/sale/wizard/sale_make_invoice_advance.py b/addons/sale/wizard/sale_make_invoice_advance.py index da4a2896ee0..39999a8d1b7 100644 --- a/addons/sale/wizard/sale_make_invoice_advance.py +++ b/addons/sale/wizard/sale_make_invoice_advance.py @@ -35,6 +35,7 @@ class sale_advance_payment_inv(osv.osv_memory): Use Percentage to invoice a percentage of the total amount. Use Fixed Price to invoice a specific amound in advance. Use Some Order Lines to invoice a selection of the sale order lines."""), + 'qtty': fields.float('Quantity', digits=(16, 2), required=True), 'product_id': fields.many2one('product.product', 'Advance Product', help="""Select a product of type service which is called 'Advance Product'. You may have to create it and set it as a default value on this field."""), @@ -52,6 +53,7 @@ class sale_advance_payment_inv(osv.osv_memory): _defaults = { 'advance_payment_method': 'all', + 'qtty': 1.0, 'product_id': _get_advance_product, } @@ -149,7 +151,7 @@ class sale_advance_payment_inv(osv.osv_memory): 'name': res.get('name'), 'account_id': res['account_id'], 'price_unit': inv_amount, - 'quantity': 1.0, + 'quantity': wizard.qtty or 1.0, 'discount': False, 'uos_id': res.get('uos_id', False), 'product_id': wizard.product_id.id, @@ -183,8 +185,8 @@ class sale_advance_payment_inv(osv.osv_memory): 'order_id': sale.id, 'name': res.get('name'), 'price_unit': -inv_amount, - 'product_uom_qty': 1.0, - 'product_uos_qty': 1.0, + 'product_uom_qty': wizard.qtty or 1.0, + 'product_uos_qty': wizard.qtty or 1.0, 'product_uos': res.get('uos_id', False), 'product_uom': res.get('uom_id', False), 'product_id': wizard.product_id.id or False, diff --git a/addons/sale/wizard/sale_make_invoice_advance.xml b/addons/sale/wizard/sale_make_invoice_advance.xml index b617166d52f..28f5dc093cd 100644 --- a/addons/sale/wizard/sale_make_invoice_advance.xml +++ b/addons/sale/wizard/sale_make_invoice_advance.xml @@ -10,6 +10,7 @@ + Date: Tue, 24 Jul 2012 04:52:30 +0000 Subject: [PATCH 258/349] Launchpad automatic translations update. bzr revid: launchpad_translations_on_behalf_of_openerp-20120722044557-vi2dy3u2aq5y09v7 bzr revid: launchpad_translations_on_behalf_of_openerp-20120723051751-qjxz39bz1gs3fi6f bzr revid: launchpad_translations_on_behalf_of_openerp-20120724045230-9oi8x0xfvobpqjab --- addons/import_google/i18n/es.po | 217 +++ addons/knowledge/i18n/nb.po | 33 + addons/mrp/i18n/mn.po | 2231 ++++++++++++++++++++++++ addons/product_manufacturer/i18n/nb.po | 77 + addons/purchase_requisition/i18n/nb.po | 444 +++++ addons/sale_analytic_plans/i18n/nb.po | 28 + addons/sale_margin/i18n/nb.po | 52 + addons/sale_mrp/i18n/nb.po | 53 + addons/sale_order_dates/i18n/nb.po | 58 + addons/stock_location/i18n/nb.po | 400 +++++ addons/stock_planning/i18n/nb.po | 1178 +++++++++++++ 11 files changed, 4771 insertions(+) create mode 100644 addons/import_google/i18n/es.po create mode 100644 addons/knowledge/i18n/nb.po create mode 100644 addons/mrp/i18n/mn.po create mode 100644 addons/product_manufacturer/i18n/nb.po create mode 100644 addons/purchase_requisition/i18n/nb.po create mode 100644 addons/sale_analytic_plans/i18n/nb.po create mode 100644 addons/sale_margin/i18n/nb.po create mode 100644 addons/sale_mrp/i18n/nb.po create mode 100644 addons/sale_order_dates/i18n/nb.po create mode 100644 addons/stock_location/i18n/nb.po create mode 100644 addons/stock_planning/i18n/nb.po diff --git a/addons/import_google/i18n/es.po b/addons/import_google/i18n/es.po new file mode 100644 index 00000000000..325df15688c --- /dev/null +++ b/addons/import_google/i18n/es.po @@ -0,0 +1,217 @@ +# Spanish translation for openobject-addons +# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012 +# This file is distributed under the same license as the openobject-addons package. +# FIRST AUTHOR , 2012. +# +msgid "" +msgstr "" +"Project-Id-Version: openobject-addons\n" +"Report-Msgid-Bugs-To: FULL NAME \n" +"POT-Creation-Date: 2012-02-08 00:36+0000\n" +"PO-Revision-Date: 2012-07-21 21:08+0000\n" +"Last-Translator: FULL NAME \n" +"Language-Team: Spanish \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2012-07-22 04:45+0000\n" +"X-Generator: Launchpad (build 15654)\n" + +#. module: import_google +#: help:synchronize.google.import,group_name:0 +msgid "Choose which group to import, By default it takes all." +msgstr "" + +#. module: import_google +#: view:synchronize.google.import:0 +msgid "Import Google Calendar Events" +msgstr "" + +#. module: import_google +#: view:synchronize.google.import:0 +msgid "_Import Events" +msgstr "" + +#. module: import_google +#: code:addons/import_google/wizard/import_google_data.py:71 +#, python-format +msgid "" +"No Google Username or password Defined for user.\n" +"Please define in user view" +msgstr "" + +#. module: import_google +#: code:addons/import_google/wizard/import_google_data.py:127 +#, python-format +msgid "" +"Invalid login detail !\n" +" Specify Username/Password." +msgstr "" + +#. module: import_google +#: field:synchronize.google.import,supplier:0 +msgid "Supplier" +msgstr "" + +#. module: import_google +#: view:synchronize.google.import:0 +msgid "Import Options" +msgstr "" + +#. module: import_google +#: field:synchronize.google.import,group_name:0 +msgid "Group Name" +msgstr "" + +#. module: import_google +#: model:ir.model,name:import_google.model_crm_case_categ +msgid "Category of Case" +msgstr "" + +#. module: import_google +#: model:ir.actions.act_window,name:import_google.act_google_login_contact_form +#: model:ir.ui.menu,name:import_google.menu_sync_contact +msgid "Import Google Contacts" +msgstr "" + +#. module: import_google +#: view:google.import.message:0 +msgid "Import Google Data" +msgstr "" + +#. module: import_google +#: view:crm.meeting:0 +msgid "Meeting Type" +msgstr "" + +#. module: import_google +#: code:addons/import_google/wizard/import_google.py:38 +#: code:addons/import_google/wizard/import_google_data.py:28 +#, python-format +msgid "" +"Please install gdata-python-client from http://code.google.com/p/gdata-" +"python-client/downloads/list" +msgstr "" + +#. module: import_google +#: model:ir.model,name:import_google.model_google_login +msgid "Google Contact" +msgstr "" + +#. module: import_google +#: view:synchronize.google.import:0 +msgid "Import contacts from a google account" +msgstr "" + +#. module: import_google +#: code:addons/import_google/wizard/import_google_data.py:133 +#, python-format +msgid "Please specify correct user and password !" +msgstr "" + +#. module: import_google +#: field:synchronize.google.import,customer:0 +msgid "Customer" +msgstr "" + +#. module: import_google +#: view:synchronize.google.import:0 +msgid "_Cancel" +msgstr "" + +#. module: import_google +#: model:ir.model,name:import_google.model_synchronize_google_import +msgid "synchronize.google.import" +msgstr "" + +#. module: import_google +#: view:synchronize.google.import:0 +msgid "_Import Contacts" +msgstr "" + +#. module: import_google +#: model:ir.actions.act_window,name:import_google.act_google_login_form +#: model:ir.ui.menu,name:import_google.menu_sync_calendar +msgid "Import Google Calendar" +msgstr "" + +#. module: import_google +#: code:addons/import_google/wizard/import_google_data.py:50 +#, python-format +msgid "Import google" +msgstr "" + +#. module: import_google +#: code:addons/import_google/wizard/import_google_data.py:127 +#: code:addons/import_google/wizard/import_google_data.py:133 +#, python-format +msgid "Error" +msgstr "" + +#. module: import_google +#: code:addons/import_google/wizard/import_google_data.py:71 +#, python-format +msgid "Warning !" +msgstr "" + +#. module: import_google +#: field:synchronize.google.import,create_partner:0 +msgid "Options" +msgstr "" + +#. module: import_google +#: view:google.import.message:0 +msgid "_Ok" +msgstr "" + +#. module: import_google +#: code:addons/import_google/wizard/import_google.py:38 +#: code:addons/import_google/wizard/import_google_data.py:28 +#, python-format +msgid "Google Contacts Import Error!" +msgstr "" + +#. module: import_google +#: model:ir.model,name:import_google.model_google_import_message +msgid "Import Message" +msgstr "" + +#. module: import_google +#: field:synchronize.google.import,calendar_name:0 +msgid "Calendar Name" +msgstr "" + +#. module: import_google +#: help:synchronize.google.import,supplier:0 +msgid "Check this box to set newly created partner as Supplier." +msgstr "" + +#. module: import_google +#: selection:synchronize.google.import,create_partner:0 +msgid "Import only address" +msgstr "" + +#. module: import_google +#: field:crm.case.categ,user_id:0 +msgid "User" +msgstr "" + +#. module: import_google +#: view:synchronize.google.import:0 +msgid "Partner Status for this Group:" +msgstr "" + +#. module: import_google +#: field:google.import.message,name:0 +msgid "Message" +msgstr "" + +#. module: import_google +#: selection:synchronize.google.import,create_partner:0 +msgid "Create partner for each contact" +msgstr "" + +#. module: import_google +#: help:synchronize.google.import,customer:0 +msgid "Check this box to set newly created partner as Customer." +msgstr "" diff --git a/addons/knowledge/i18n/nb.po b/addons/knowledge/i18n/nb.po new file mode 100644 index 00000000000..6f721f133bb --- /dev/null +++ b/addons/knowledge/i18n/nb.po @@ -0,0 +1,33 @@ +# Norwegian Bokmal translation for openobject-addons +# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012 +# This file is distributed under the same license as the openobject-addons package. +# FIRST AUTHOR , 2012. +# +msgid "" +msgstr "" +"Project-Id-Version: openobject-addons\n" +"Report-Msgid-Bugs-To: FULL NAME \n" +"POT-Creation-Date: 2012-02-08 01:37+0100\n" +"PO-Revision-Date: 2012-07-23 10:30+0000\n" +"Last-Translator: FULL NAME \n" +"Language-Team: Norwegian Bokmal \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2012-07-24 04:52+0000\n" +"X-Generator: Launchpad (build 15668)\n" + +#. module: knowledge +#: model:ir.ui.menu,name:knowledge.menu_document2 +msgid "Collaborative Content" +msgstr "" + +#. module: knowledge +#: model:ir.ui.menu,name:knowledge.menu_document_configuration +msgid "Configuration" +msgstr "Konfigurasjon" + +#. module: knowledge +#: model:ir.ui.menu,name:knowledge.menu_document +msgid "Knowledge" +msgstr "Kunnskap" diff --git a/addons/mrp/i18n/mn.po b/addons/mrp/i18n/mn.po new file mode 100644 index 00000000000..7c97b68cc46 --- /dev/null +++ b/addons/mrp/i18n/mn.po @@ -0,0 +1,2231 @@ +# Mongolian translation for openobject-addons +# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012 +# This file is distributed under the same license as the openobject-addons package. +# FIRST AUTHOR , 2012. +# +msgid "" +msgstr "" +"Project-Id-Version: openobject-addons\n" +"Report-Msgid-Bugs-To: FULL NAME \n" +"POT-Creation-Date: 2012-02-08 00:49+0000\n" +"PO-Revision-Date: 2012-07-21 12:33+0000\n" +"Last-Translator: FULL NAME \n" +"Language-Team: Mongolian \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2012-07-22 04:45+0000\n" +"X-Generator: Launchpad (build 15654)\n" + +#. module: mrp +#: view:mrp.routing.workcenter:0 +msgid "Routing Work Centers" +msgstr "" + +#. module: mrp +#: model:ir.actions.act_window,help:mrp.mrp_production_action +msgid "" +"Manufacturing Orders are usually proposed automatically by OpenERP based on " +"the bill of materials and the procurement rules, but you can also create " +"manufacturing orders manually. OpenERP will handle the consumption of the " +"raw materials (stock decrease) and the production of the finished products " +"(stock increase) when the order is processed." +msgstr "" + +#. module: mrp +#: help:mrp.production,location_src_id:0 +msgid "Location where the system will look for components." +msgstr "" + +#. module: mrp +#: field:mrp.production,workcenter_lines:0 +msgid "Work Centers Utilisation" +msgstr "" + +#. module: mrp +#: model:product.template,name:mrp.product_sugar_product_template +msgid "Sugar" +msgstr "" + +#. module: mrp +#: report:mrp.production.order:0 +msgid "No. Of Cycles" +msgstr "" + +#. module: mrp +#: field:mrp.routing.workcenter,cycle_nbr:0 +msgid "Number of Cycles" +msgstr "" + +#. module: mrp +#: model:product.uom.categ,name:mrp.product_uom_categ_fluid +msgid "Fluid" +msgstr "" + +#. module: mrp +#: model:process.transition,note:mrp.process_transition_minimumstockprocure0 +msgid "" +"The 'Minimum stock rule' allows the system to create procurement orders " +"automatically as soon as the minimum stock is reached." +msgstr "" + +#. module: mrp +#: field:mrp.production,picking_id:0 +msgid "Picking list" +msgstr "" + +#. module: mrp +#: code:addons/mrp/report/price.py:130 +#, python-format +msgid "Hourly Cost" +msgstr "" + +#. module: mrp +#: code:addons/mrp/report/price.py:139 +#, python-format +msgid "Cost Price per Uom" +msgstr "" + +#. module: mrp +#: view:mrp.production:0 +msgid "Scrap Products" +msgstr "" + +#. module: mrp +#: model:ir.actions.act_window,name:mrp.mrp_routing_action +#: model:ir.ui.menu,name:mrp.menu_mrp_routing_action +msgid "Routings" +msgstr "" + +#. module: mrp +#: field:mrp.workcenter,product_id:0 +msgid "Work Center Product" +msgstr "" + +#. module: mrp +#: view:mrp.bom:0 +msgid "Search Bill Of Material" +msgstr "" + +#. module: mrp +#: model:process.node,note:mrp.process_node_stockproduct1 +msgid "For stockable products and consumables" +msgstr "" + +#. module: mrp +#: model:process.transition,name:mrp.process_transition_stockproduction0 +msgid "To Produce" +msgstr "" + +#. module: mrp +#: help:mrp.routing.workcenter,cycle_nbr:0 +msgid "" +"Number of iterations this work center has to do in the specified operation " +"of the routing." +msgstr "" + +#. module: mrp +#: view:mrp.bom:0 +#: field:mrp.bom,code:0 +#: view:mrp.production:0 +#: field:mrp.production,name:0 +msgid "Reference" +msgstr "" + +#. module: mrp +#: view:mrp.production:0 +msgid "Finished Products" +msgstr "" + +#. module: mrp +#: view:mrp.production:0 +msgid "Manufacturing Orders which are currently in production." +msgstr "" + +#. module: mrp +#: model:process.transition,name:mrp.process_transition_servicerfq0 +#: model:process.transition,name:mrp.process_transition_stockrfq0 +msgid "To Buy" +msgstr "" + +#. module: mrp +#: model:process.transition,note:mrp.process_transition_purchaseprocure0 +msgid "The system launches automatically a RFQ to the preferred supplier." +msgstr "" + +#. module: mrp +#: view:mrp.production:0 +msgid "Products to Finish" +msgstr "" + +#. module: mrp +#: selection:mrp.bom,method:0 +msgid "Set / Pack" +msgstr "" + +#. module: mrp +#: view:mrp.production:0 +#: field:mrp.production,state:0 +msgid "State" +msgstr "" + +#. module: mrp +#: field:mrp.workcenter,costs_hour:0 +msgid "Cost per hour" +msgstr "" + +#. module: mrp +#: model:product.template,name:mrp.product_orange_product_template +msgid "Orange" +msgstr "" + +#. module: mrp +#: model:process.transition,note:mrp.process_transition_servicemts0 +msgid "" +"This is used in case of a service without any impact in the system, a " +"training session for instance." +msgstr "" + +#. module: mrp +#: view:mrp.production:0 +msgid "UOM" +msgstr "" + +#. module: mrp +#: field:change.production.qty,product_qty:0 +#: field:mrp.bom,product_qty:0 +#: field:mrp.production,product_qty:0 +#: field:mrp.production.product.line,product_qty:0 +msgid "Product Qty" +msgstr "" + +#. module: mrp +#: help:mrp.workcenter,product_id:0 +msgid "" +"Fill this product to track easily your production costs in the analytic " +"accounting." +msgstr "" + +#. module: mrp +#: model:process.node,note:mrp.process_node_purchaseprocure0 +msgid "For purchased material" +msgstr "" + +#. module: mrp +#: field:mrp.bom.revision,indice:0 +msgid "Revision" +msgstr "" + +#. module: mrp +#: model:ir.actions.act_window,help:mrp.product_form_config_action +msgid "" +"Create a product form for everything you buy or sell. Specify a supplier if " +"the product can be purchased." +msgstr "" + +#. module: mrp +#: model:ir.ui.menu,name:mrp.next_id_77 +msgid "Reporting" +msgstr "" + +#. module: mrp +#: field:mrp.workcenter,costs_cycle_account_id:0 +msgid "Cycle Account" +msgstr "" + +#. module: mrp +#: code:addons/mrp/report/price.py:130 +#, python-format +msgid "Work Cost" +msgstr "" + +#. module: mrp +#: report:bom.structure:0 +msgid "[" +msgstr "" + +#. module: mrp +#: model:process.transition,name:mrp.process_transition_procureserviceproduct0 +msgid "Procurement of services" +msgstr "" + +#. module: mrp +#: view:mrp.workcenter:0 +msgid "Capacity Information" +msgstr "" + +#. module: mrp +#: field:mrp.production,move_created_ids2:0 +msgid "Produced Products" +msgstr "" + +#. module: mrp +#: report:mrp.production.order:0 +msgid "Destination Location" +msgstr "" + +#. module: mrp +#: model:ir.ui.menu,name:mrp.menu_mrp_bom +msgid "Master Data" +msgstr "" + +#. module: mrp +#: model:process.transition,note:mrp.process_transition_stockmts0 +msgid "" +"The system waits for the products to be available in the stock. These " +"products are typically procured manually or through a minimum stock rule." +msgstr "" + +#. module: mrp +#: report:mrp.production.order:0 +msgid "Partner Ref" +msgstr "" + +#. module: mrp +#: field:mrp.production,origin:0 +#: report:mrp.production.order:0 +msgid "Source Document" +msgstr "" + +#. module: mrp +#: field:mrp.production,product_lines:0 +msgid "Scheduled goods" +msgstr "" + +#. module: mrp +#: selection:mrp.bom,type:0 +msgid "Sets / Phantom" +msgstr "" + +#. module: mrp +#: help:mrp.bom,position:0 +msgid "Reference to a position in an external plan." +msgstr "" + +#. module: mrp +#: constraint:stock.move:0 +msgid "You try to assign a lot which is not from the same product" +msgstr "" + +#. module: mrp +#: model:product.template,name:mrp.product_cloth_product_template +msgid "Cloth" +msgstr "" + +#. module: mrp +#: model:ir.model,name:mrp.model_mrp_product_produce +msgid "Product Produce" +msgstr "" + +#. module: mrp +#: constraint:mrp.bom:0 +msgid "Error ! You cannot create recursive BoM." +msgstr "" + +#. module: mrp +#: model:ir.model,name:mrp.model_mrp_routing_workcenter +msgid "Work Center Usage" +msgstr "" + +#. module: mrp +#: model:process.transition,name:mrp.process_transition_procurestockableproduct0 +msgid "Procurement of stockable Product" +msgstr "" + +#. module: mrp +#: view:mrp.bom:0 +msgid "Default UOM" +msgstr "" + +#. module: mrp +#: sql_constraint:mrp.production:0 +#: sql_constraint:stock.picking:0 +msgid "Reference must be unique per Company!" +msgstr "" + +#. module: mrp +#: code:addons/mrp/report/price.py:139 +#: report:bom.structure:0 +#: field:mrp.product_price,number:0 +#: report:mrp.production.order:0 +#, python-format +msgid "Quantity" +msgstr "" + +#. module: mrp +#: field:mrp.production.workcenter.line,hour:0 +msgid "Nbr of hours" +msgstr "" + +#. module: mrp +#: view:mrp.production:0 +msgid "Confirm Production" +msgstr "" + +#. module: mrp +#: model:process.transition,note:mrp.process_transition_stockproduct0 +msgid "" +"The system creates an order (production or purchased) depending on the sold " +"quantity and the products parameters." +msgstr "" + +#. module: mrp +#: model:process.transition,note:mrp.process_transition_stockproduction0 +msgid "" +"In case the Supply method of the product is Produce, the system creates a " +"production order." +msgstr "" + +#. module: mrp +#: model:ir.actions.act_window,help:mrp.mrp_property_action +msgid "" +"The Properties in OpenERP are used to select the right bill of materials for " +"manufacturing a product when you have different ways of building the same " +"product. You can assign several properties to each Bill of Materials. When a " +"sales person creates a sales order, he can relate it to several properties " +"and OpenERP will automatically select the BoM to use according the needs." +msgstr "" + +#. module: mrp +#: help:mrp.production,picking_id:0 +msgid "" +"This is the Internal Picking List that brings the finished product to the " +"production plan" +msgstr "" + +#. module: mrp +#: model:ir.ui.menu,name:mrp.menu_view_resource_calendar_search_mrp +msgid "Working Time" +msgstr "" + +#. module: mrp +#: model:ir.actions.act_window,name:mrp.action_report_in_out_picking_tree +msgid "Weekly Stock Value Variation" +msgstr "" + +#. module: mrp +#: view:mrp.production:0 +#: field:mrp.production,date_planned_date:0 +#: report:mrp.production.order:0 +msgid "Scheduled Date" +msgstr "" + +#. module: mrp +#: view:mrp.bom:0 +msgid "Component Product" +msgstr "" + +#. module: mrp +#: report:mrp.production.order:0 +msgid "Bill Of Material" +msgstr "" + +#. module: mrp +#: help:mrp.routing,location_id:0 +msgid "" +"Keep empty if you produce at the location where the finished products are " +"needed.Set a location if you produce at a fixed location. This can be a " +"partner location if you subcontract the manufacturing operations." +msgstr "" + +#. module: mrp +#: view:board.board:0 +msgid "Stock Value Variation" +msgstr "" + +#. module: mrp +#: model:ir.actions.act_window,name:mrp.action2 +msgid "Bill of Materials Structure" +msgstr "" + +#. module: mrp +#: model:process.node,note:mrp.process_node_serviceproduct0 +msgid "Product type is service" +msgstr "" + +#. module: mrp +#: sql_constraint:res.company:0 +msgid "The company name must be unique !" +msgstr "" + +#. module: mrp +#: model:ir.actions.act_window,help:mrp.mrp_property_group_action +msgid "" +"Define specific property groups that can be assigned to the properties of " +"your bill of materials." +msgstr "" + +#. module: mrp +#: help:mrp.workcenter,costs_cycle:0 +msgid "Specify Cost of Work Center per cycle." +msgstr "" + +#. module: mrp +#: model:process.transition,name:mrp.process_transition_bom0 +msgid "Manufacturing decomposition" +msgstr "" + +#. module: mrp +#: model:process.node,note:mrp.process_node_serviceproduct1 +msgid "For Services." +msgstr "" + +#. module: mrp +#: field:mrp.bom.revision,date:0 +msgid "Modification Date" +msgstr "" + +#. module: mrp +#: help:mrp.workcenter,costs_cycle_account_id:0 +#: help:mrp.workcenter,costs_hour_account_id:0 +msgid "" +"Complete this only if you want automatic analytic accounting entries on " +"production orders." +msgstr "" + +#. module: mrp +#: field:mrp.production.workcenter.line,cycle:0 +msgid "Nbr of cycles" +msgstr "" + +#. module: mrp +#: model:process.node,note:mrp.process_node_orderrfq0 +#: model:process.node,note:mrp.process_node_rfq0 +msgid "Request for Quotation." +msgstr "" + +#. module: mrp +#: model:process.transition,note:mrp.process_transition_billofmaterialrouting0 +msgid "" +"The Bill of Material is linked to a routing, i.e. the succession of work " +"centers." +msgstr "" + +#. module: mrp +#: constraint:product.product:0 +msgid "Error: Invalid ean code" +msgstr "" + +#. module: mrp +#: field:mrp.production,move_created_ids:0 +msgid "Products to Produce" +msgstr "" + +#. module: mrp +#: view:mrp.routing:0 +#: field:mrp.routing,location_id:0 +msgid "Production Location" +msgstr "" + +#. module: mrp +#: view:mrp.production:0 +msgid "Change Qty" +msgstr "" + +#. module: mrp +#: model:ir.actions.act_window,name:mrp.action_configure_workcenter +msgid "Configure your work centers" +msgstr "" + +#. module: mrp +#: view:mrp.production:0 +msgid "Force Reservation" +msgstr "" + +#. module: mrp +#: field:mrp.bom.revision,author_id:0 +msgid "Author" +msgstr "" + +#. module: mrp +#: field:report.mrp.inout,value:0 +msgid "Stock value" +msgstr "" + +#. module: mrp +#: model:ir.actions.act_window,name:mrp.action_product_bom_structure +msgid "Product BoM Structure" +msgstr "" + +#. module: mrp +#: view:mrp.production:0 +msgid "Search Production" +msgstr "" + +#. module: mrp +#: code:addons/mrp/report/price.py:139 +#, python-format +msgid "Supplier Price per Uom" +msgstr "" + +#. module: mrp +#: help:mrp.routing.workcenter,sequence:0 +msgid "" +"Gives the sequence order when displaying a list of routing Work Centers." +msgstr "" + +#. module: mrp +#: constraint:stock.move:0 +msgid "You can not move products from or to a location of the type view." +msgstr "" + +#. module: mrp +#: field:mrp.bom,child_complete_ids:0 +msgid "BoM Hierarchy" +msgstr "" + +#. module: mrp +#: field:mrp.bom,product_uom:0 +#: field:mrp.production,product_uom:0 +#: field:mrp.production.product.line,product_uom:0 +msgid "Product UOM" +msgstr "" + +#. module: mrp +#: selection:mrp.production,state:0 +msgid "Picking Exception" +msgstr "" + +#. module: mrp +#: field:mrp.bom,bom_lines:0 +msgid "BoM Lines" +msgstr "" + +#. module: mrp +#: field:mrp.workcenter,time_start:0 +msgid "Time before prod." +msgstr "" + +#. module: mrp +#: help:mrp.routing,active:0 +msgid "" +"If the active field is set to False, it will allow you to hide the routing " +"without removing it." +msgstr "" + +#. module: mrp +#: model:process.transition,name:mrp.process_transition_billofmaterialrouting0 +msgid "Material Routing" +msgstr "" + +#. module: mrp +#: view:mrp.production:0 +#: field:mrp.production,move_lines2:0 +#: report:mrp.production.order:0 +msgid "Consumed Products" +msgstr "" + +#. module: mrp +#: model:ir.actions.act_window,name:mrp.action_mrp_workcenter_load_wizard +#: model:ir.model,name:mrp.model_mrp_workcenter_load +#: model:ir.model,name:mrp.model_report_workcenter_load +msgid "Work Center Load" +msgstr "" + +#. module: mrp +#: code:addons/mrp/procurement.py:43 +#, python-format +msgid "No BoM defined for this product !" +msgstr "" + +#. module: mrp +#: model:ir.actions.act_window,name:mrp.mrp_bom_form_action2 +#: model:ir.ui.menu,name:mrp.menu_mrp_bom_form_action2 +msgid "Bill of Material Components" +msgstr "" + +#. module: mrp +#: model:ir.model,name:mrp.model_stock_move +msgid "Stock Move" +msgstr "" + +#. module: mrp +#: model:ir.ui.menu,name:mrp.menu_mrp_planning +msgid "Planning" +msgstr "" + +#. module: mrp +#: view:mrp.production:0 +msgid "Ready" +msgstr "" + +#. module: mrp +#: model:product.template,name:mrp.product_buttons_product_template +msgid "Shirt Buttons" +msgstr "" + +#. module: mrp +#: help:mrp.production,routing_id:0 +msgid "" +"The list of operations (list of work centers) to produce the finished " +"product. The routing is mainly used to compute work center costs during " +"operations and to plan future loads on work centers based on production " +"plannification." +msgstr "" + +#. module: mrp +#: help:mrp.workcenter,time_cycle:0 +msgid "Time in hours for doing one cycle." +msgstr "" + +#. module: mrp +#: constraint:mrp.bom:0 +msgid "BoM line product should not be same as BoM product." +msgstr "" + +#. module: mrp +#: view:mrp.production:0 +msgid "In Production" +msgstr "" + +#. module: mrp +#: model:ir.ui.menu,name:mrp.menu_mrp_property +msgid "Master Bill of Materials" +msgstr "" + +#. module: mrp +#: help:mrp.bom,product_uos:0 +msgid "" +"Product UOS (Unit of Sale) is the unit of measurement for the invoicing and " +"promotion of stock." +msgstr "" + +#. module: mrp +#: view:mrp.product_price:0 +#: view:mrp.workcenter.load:0 +msgid "Print" +msgstr "" + +#. module: mrp +#: view:mrp.bom:0 +#: view:mrp.workcenter:0 +msgid "Type" +msgstr "" + +#. module: mrp +#: model:process.node,note:mrp.process_node_minimumstockrule0 +msgid "Linked to the 'Minimum stock rule' supplying method." +msgstr "" + +#. module: mrp +#: selection:mrp.workcenter.load,time_unit:0 +msgid "Per month" +msgstr "" + +#. module: mrp +#: code:addons/mrp/wizard/change_production_qty.py:78 +#: code:addons/mrp/wizard/change_production_qty.py:83 +#, python-format +msgid "Couldn't find bill of material for product" +msgstr "" + +#. module: mrp +#: report:bom.structure:0 +msgid "Product Name" +msgstr "" + +#. module: mrp +#: code:addons/mrp/mrp.py:503 +#, python-format +msgid "Invalid action !" +msgstr "" + +#. module: mrp +#: help:mrp.bom,product_efficiency:0 +msgid "A factor of 0.9 means a loss of 10% within the production process." +msgstr "" + +#. module: mrp +#: code:addons/mrp/mrp.py:734 +#: code:addons/mrp/mrp.py:762 +#, python-format +msgid "Warning!" +msgstr "" + +#. module: mrp +#: report:mrp.production.order:0 +msgid "Printing date" +msgstr "" + +#. module: mrp +#: model:process.node,name:mrp.process_node_orderrfq0 +#: model:process.node,name:mrp.process_node_rfq0 +msgid "RFQ" +msgstr "" + +#. module: mrp +#: model:process.transition,name:mrp.process_transition_producttostockrules0 +msgid "Procurement rule" +msgstr "" + +#. module: mrp +#: view:mrp.production:0 +msgid "Partial" +msgstr "" + +#. module: mrp +#: report:mrp.production.order:0 +msgid "WorkCenter" +msgstr "" + +#. module: mrp +#: model:process.transition,note:mrp.process_transition_procureserviceproduct0 +msgid "" +"Depending on the chosen method to 'supply' the service, the procurement " +"order creates a RFQ for a subcontracting purchase order or waits until the " +"service is done (= the delivery of the products)." +msgstr "" + +#. module: mrp +#: selection:mrp.production,priority:0 +msgid "Urgent" +msgstr "" + +#. module: mrp +#: view:mrp.production:0 +msgid "Manufacturing Orders which are waiting for raw materials." +msgstr "" + +#. module: mrp +#: model:ir.actions.act_window,help:mrp.mrp_workcenter_action +msgid "" +"Work Centers allow you to create and manage manufacturing units. They " +"consist of workers and/or machines, which are considered as units for " +"capacity and planning forecast. Keep in mind that the working time and " +"resource leave are not taken into account in the time computation of the " +"work center." +msgstr "" + +#. module: mrp +#: model:ir.model,name:mrp.model_mrp_production +msgid "Manufacturing Order" +msgstr "" + +#. module: mrp +#: model:process.transition,name:mrp.process_transition_productionprocureproducts0 +msgid "Procurement of raw material" +msgstr "" + +#. module: mrp +#: view:mrp.production:0 +#: field:mrp.production,cycle_total:0 +msgid "Total Cycles" +msgstr "" + +#. module: mrp +#: selection:mrp.production,state:0 +msgid "Ready to Produce" +msgstr "" + +#. module: mrp +#: field:mrp.bom.revision,name:0 +msgid "Modification name" +msgstr "" + +#. module: mrp +#: view:mrp.bom:0 +#: view:mrp.production:0 +msgid "Date" +msgstr "" + +#. module: mrp +#: field:mrp.bom,type:0 +msgid "BoM Type" +msgstr "" + +#. module: mrp +#: code:addons/mrp/procurement.py:45 +#, python-format +msgid "" +"Procurement '%s' has an exception: 'No BoM defined for this product !'" +msgstr "" + +#. module: mrp +#: view:mrp.property:0 +msgid "Search" +msgstr "" + +#. module: mrp +#: code:addons/mrp/mrp.py:626 +#, python-format +msgid "Could not cancel manufacturing order !" +msgstr "" + +#. module: mrp +#: field:report.workcenter.load,cycle:0 +msgid "Nbr of cycle" +msgstr "" + +#. module: mrp +#: model:ir.model,name:mrp.model_res_company +msgid "Companies" +msgstr "" + +#. module: mrp +#: code:addons/mrp/mrp.py:627 +#, python-format +msgid "" +"You must first cancel related internal picking attached to this " +"manufacturing order." +msgstr "" + +#. module: mrp +#: model:process.node,name:mrp.process_node_minimumstockrule0 +#: model:process.node,name:mrp.process_node_productminimumstockrule0 +msgid "Minimum Stock" +msgstr "" + +#. module: mrp +#: code:addons/mrp/mrp.py:503 +#, python-format +msgid "Cannot delete a manufacturing order in state '%s'" +msgstr "" + +#. module: mrp +#: model:ir.ui.menu,name:mrp.menus_dash_mrp +msgid "Dashboard" +msgstr "" + +#. module: mrp +#: code:addons/mrp/report/price.py:160 +#: code:addons/mrp/report/price.py:211 +#, python-format +msgid "Total Cost of %s %s" +msgstr "" + +#. module: mrp +#: model:process.node,name:mrp.process_node_stockproduct0 +#: model:process.node,name:mrp.process_node_stockproduct1 +#: model:process.process,name:mrp.process_process_stockableproductprocess0 +msgid "Stockable Product" +msgstr "" + +#. module: mrp +#: code:addons/mrp/report/price.py:130 +#, python-format +msgid "Work Center name" +msgstr "" + +#. module: mrp +#: field:mrp.routing,code:0 +msgid "Code" +msgstr "" + +#. module: mrp +#: report:mrp.production.order:0 +msgid "No. Of Hours" +msgstr "" + +#. module: mrp +#: view:mrp.property:0 +#: view:mrp.property.group:0 +msgid "Property Group" +msgstr "" + +#. module: mrp +#: view:mrp.production:0 +msgid "Qty" +msgstr "" + +#. module: mrp +#: model:process.node,note:mrp.process_node_production0 +msgid "Manufacturing Plan." +msgstr "" + +#. module: mrp +#: view:mrp.routing:0 +#: view:mrp.workcenter:0 +msgid "Inactive" +msgstr "" + +#. module: mrp +#: view:change.production.qty:0 +#: view:mrp.product.produce:0 +#: view:mrp.product_price:0 +#: view:mrp.production:0 +#: view:mrp.workcenter.load:0 +msgid "Cancel" +msgstr "" + +#. module: mrp +#: code:addons/mrp/wizard/change_production_qty.py:63 +#, python-format +msgid "Active Id is not found" +msgstr "" + +#. module: mrp +#: model:process.transition,note:mrp.process_transition_servicerfq0 +msgid "" +"If the service has a 'Buy' supply method, this creates a RFQ, a " +"subcontracting demand for instance." +msgstr "" + +#. module: mrp +#: field:mrp.production,move_prod_id:0 +msgid "Move product" +msgstr "" + +#. module: mrp +#: view:mrp.production:0 +msgid "Late" +msgstr "" + +#. module: mrp +#: model:process.node,name:mrp.process_node_servicemts0 +msgid "Make to stock" +msgstr "" + +#. module: mrp +#: report:bom.structure:0 +msgid "BOM Name" +msgstr "" + +#. module: mrp +#: view:mrp.production:0 +msgid "Start Production" +msgstr "" + +#. module: mrp +#: model:ir.actions.act_window,name:mrp.open_board_manufacturing +#: model:ir.ui.menu,name:mrp.menu_board_manufacturing +msgid "Production Dashboard" +msgstr "" + +#. module: mrp +#: model:res.groups,name:mrp.group_mrp_manager +msgid "Manager" +msgstr "" + +#. module: mrp +#: view:mrp.production:0 +msgid "Source Loc." +msgstr "" + +#. module: mrp +#: field:mrp.bom,position:0 +msgid "Internal Reference" +msgstr "" + +#. module: mrp +#: model:process.node,note:mrp.process_node_billofmaterial0 +msgid "Product's structure" +msgstr "" + +#. module: mrp +#: field:mrp.bom,name:0 +#: report:mrp.production.order:0 +#: field:mrp.production.product.line,name:0 +#: field:mrp.routing,name:0 +#: field:mrp.routing.workcenter,name:0 +msgid "Name" +msgstr "" + +#. module: mrp +#: field:mrp.product.produce,mode:0 +msgid "Mode" +msgstr "" + +#. module: mrp +#: report:bom.structure:0 +msgid "]" +msgstr "" + +#. module: mrp +#: field:mrp.workcenter.load,measure_unit:0 +msgid "Amount measuring unit" +msgstr "" + +#. module: mrp +#: model:ir.actions.act_window,help:mrp.mrp_production_action_planning +msgid "" +"Manufacturing Orders describe the operations that need to be carried out and " +"the raw materials usage for each production stage. You use specifications " +"(bills of materials or BoM) to work out the raw material requirements and " +"the manufacturing orders needed for the finished products. Once the bills of " +"materials have been defined, OpenERP is capable of automatically deciding on " +"the manufacturing route depending on the needs of the company." +msgstr "" + +#. module: mrp +#: model:ir.actions.todo.category,name:mrp.category_mrp_config +msgid "MRP Management" +msgstr "" + +#. module: mrp +#: help:mrp.workcenter,costs_hour:0 +msgid "Specify Cost of Work Center per hour." +msgstr "" + +#. module: mrp +#: help:mrp.workcenter,capacity_per_cycle:0 +msgid "" +"Number of operations this Work Center can do in parallel. If this Work " +"Center represents a team of 5 workers, the capacity per cycle is 5." +msgstr "" + +#. module: mrp +#: model:ir.actions.act_window,name:mrp.mrp_production_action3 +msgid "Manufacturing Orders in Progress" +msgstr "" + +#. module: mrp +#: view:mrp.bom:0 +#: view:mrp.production:0 +#: view:mrp.property:0 +#: view:mrp.routing:0 +#: view:mrp.workcenter:0 +msgid "Group By..." +msgstr "" + +#. module: mrp +#: code:addons/mrp/report/price.py:130 +#, python-format +msgid "Cycles Cost" +msgstr "" + +#. module: mrp +#: selection:mrp.workcenter.load,measure_unit:0 +msgid "Amount in cycles" +msgstr "" + +#. module: mrp +#: field:mrp.production,location_dest_id:0 +msgid "Finished Products Location" +msgstr "" + +#. module: mrp +#: model:ir.ui.menu,name:mrp.menu_pm_resources_config +msgid "Resources" +msgstr "" + +#. module: mrp +#: help:mrp.routing.workcenter,hour_nbr:0 +msgid "" +"Time in hours for this Work Center to achieve the operation of the specified " +"routing." +msgstr "" + +#. module: mrp +#: field:mrp.workcenter,costs_journal_id:0 +msgid "Analytic Journal" +msgstr "" + +#. module: mrp +#: model:ir.actions.act_window,name:mrp.mrp_workcenter_action +#: model:ir.ui.menu,name:mrp.menu_view_resource_search_mrp +#: field:mrp.routing,workcenter_lines:0 +msgid "Work Centers" +msgstr "" + +#. module: mrp +#: selection:mrp.workcenter.load,time_unit:0 +msgid "Per week" +msgstr "" + +#. module: mrp +#: model:ir.actions.act_window,help:mrp.mrp_routing_action +msgid "" +"Routings allow you to create and manage the manufacturing operations that " +"should be followed within your work centers in order to produce a product. " +"They are attached to bills of materials that will define the required raw " +"materials." +msgstr "" + +#. module: mrp +#: model:ir.actions.act_window,name:mrp.product_form_config_action +msgid "Create or Import Products" +msgstr "" + +#. module: mrp +#: field:report.workcenter.load,hour:0 +msgid "Nbr of hour" +msgstr "" + +#. module: mrp +#: view:mrp.routing:0 +msgid "Work Center Operations" +msgstr "" + +#. module: mrp +#: view:mrp.routing:0 +msgid "Notes" +msgstr "" + +#. module: mrp +#: view:mrp.production:0 +msgid "Manufacturing Orders which are ready to start production." +msgstr "" + +#. module: mrp +#: model:ir.model,name:mrp.model_mrp_bom +#: view:mrp.bom:0 +#: field:mrp.production,bom_id:0 +#: model:process.node,name:mrp.process_node_billofmaterial0 +msgid "Bill of Material" +msgstr "" + +#. module: mrp +#: view:mrp.workcenter.load:0 +msgid "Select time unit" +msgstr "" + +#. module: mrp +#: view:report.workcenter.load:0 +msgid "Work Center load" +msgstr "" + +#. module: mrp +#: help:mrp.production,location_dest_id:0 +msgid "Location where the system will stock the finished products." +msgstr "" + +#. module: mrp +#: help:mrp.routing.workcenter,routing_id:0 +msgid "" +"Routing indicates all the Work Centers used, for how long and/or cycles.If " +"Routing is indicated then,the third tab of a production order (Work Centers) " +"will be automatically pre-completed." +msgstr "" + +#. module: mrp +#: model:process.transition,note:mrp.process_transition_producttostockrules0 +msgid "" +"The Minimum Stock Rule is an automatic procurement rule based on a mini and " +"maxi quantity. It's available in the Inventory management menu and " +"configured by product." +msgstr "" + +#. module: mrp +#: code:addons/mrp/report/price.py:187 +#, python-format +msgid "Components Cost of %s %s" +msgstr "" + +#. module: mrp +#: selection:mrp.workcenter.load,time_unit:0 +msgid "Day by day" +msgstr "" + +#. module: mrp +#: view:mrp.bom:0 +msgid "Revisions" +msgstr "" + +#. module: mrp +#: model:product.template,name:mrp.product_shirt_product_template +msgid "Shirt" +msgstr "" + +#. module: mrp +#: field:mrp.production,priority:0 +msgid "Priority" +msgstr "" + +#. module: mrp +#: model:ir.model,name:mrp.model_stock_picking +msgid "Picking List" +msgstr "" + +#. module: mrp +#: code:addons/mrp/mrp.py:1000 +#, python-format +msgid "Manufacturing order '%s' is scheduled for the %s." +msgstr "" + +#. module: mrp +#: report:mrp.production.order:0 +msgid "Production Order N° :" +msgstr "" + +#. module: mrp +#: code:addons/mrp/mrp.py:647 +#, python-format +msgid "Manufacturing order '%s' is ready to produce." +msgstr "" + +#. module: mrp +#: model:ir.model,name:mrp.model_mrp_production_product_line +msgid "Production Scheduled Product" +msgstr "" + +#. module: mrp +#: code:addons/mrp/report/price.py:204 +#, python-format +msgid "Work Cost of %s %s" +msgstr "" + +#. module: mrp +#: help:res.company,manufacturing_lead:0 +msgid "Security days for each manufacturing operation." +msgstr "" + +#. module: mrp +#: model:product.template,name:mrp.product_water_product_template +msgid "Water" +msgstr "" + +#. module: mrp +#: view:mrp.bom:0 +msgid "Component Name" +msgstr "" + +#. module: mrp +#: model:process.node,name:mrp.process_node_mts0 +#: model:process.transition,name:mrp.process_transition_servicemts0 +#: model:process.transition,name:mrp.process_transition_stockmts0 +msgid "Make to Stock" +msgstr "" + +#. module: mrp +#: constraint:mrp.production:0 +msgid "Order quantity cannot be negative or zero!" +msgstr "" + +#. module: mrp +#: model:ir.actions.act_window,help:mrp.mrp_bom_form_action +msgid "" +"Master Bills of Materials allow you to create and manage the list of " +"necessary raw materials used to make a finished product. OpenERP will use " +"these BoMs to automatically propose manufacturing orders according to " +"product needs. You can either create a bill of materials to define specific " +"production steps or define a single multi-level bill of materials." +msgstr "" + +#. module: mrp +#: model:process.transition,note:mrp.process_transition_stockrfq0 +msgid "" +"In case the Supply method of the product is Buy, the system creates a " +"purchase order." +msgstr "" + +#. module: mrp +#: model:ir.model,name:mrp.model_procurement_order +msgid "Procurement" +msgstr "" + +#. module: mrp +#: model:ir.actions.act_window,name:mrp.action_view_mrp_product_price_wizard +#: view:mrp.product_price:0 +msgid "Product Cost Structure" +msgstr "" + +#. module: mrp +#: code:addons/mrp/report/price.py:139 +#, python-format +msgid "Components suppliers" +msgstr "" + +#. module: mrp +#: view:mrp.production:0 +msgid "Production Work Centers" +msgstr "" + +#. module: mrp +#: view:mrp.production:0 +msgid "Split in production lots" +msgstr "" + +#. module: mrp +#: view:mrp.workcenter:0 +msgid "Search for mrp workcenter" +msgstr "" + +#. module: mrp +#: view:mrp.bom:0 +msgid "BoM Structure" +msgstr "" + +#. module: mrp +#: field:mrp.production,date_start:0 +msgid "Start Date" +msgstr "" + +#. module: mrp +#: field:mrp.workcenter,costs_hour_account_id:0 +msgid "Hour Account" +msgstr "" + +#. module: mrp +#: view:mrp.production:0 +msgid "Destination Loc." +msgstr "" + +#. module: mrp +#: field:mrp.bom,method:0 +msgid "Method" +msgstr "" + +#. module: mrp +#: view:mrp.production:0 +msgid "Pending" +msgstr "" + +#. module: mrp +#: code:addons/mrp/mrp.py:603 +#, python-format +msgid "Couldn't find a bill of material for this product." +msgstr "" + +#. module: mrp +#: field:mrp.bom,active:0 +#: field:mrp.routing,active:0 +msgid "Active" +msgstr "" + +#. module: mrp +#: model:process.node,name:mrp.process_node_procureproducts0 +msgid "Procure Products" +msgstr "" + +#. module: mrp +#: view:report.workcenter.load:0 +msgid "Work Center Loads" +msgstr "" + +#. module: mrp +#: model:ir.model,name:mrp.model_mrp_bom_revision +msgid "Bill of Material Revision" +msgstr "" + +#. module: mrp +#: help:mrp.production,origin:0 +msgid "" +"Reference of the document that generated this production order request." +msgstr "" + +#. module: mrp +#: sql_constraint:mrp.bom:0 +msgid "" +"All product quantities must be greater than 0.\n" +"You should install the mrp_subproduct module if you want to manage extra " +"products on BoMs !" +msgstr "" + +#. module: mrp +#: view:mrp.production:0 +msgid "Extra Information" +msgstr "" + +#. module: mrp +#: model:ir.model,name:mrp.model_change_production_qty +msgid "Change Quantity of Products" +msgstr "" + +#. module: mrp +#: model:process.node,note:mrp.process_node_productionorder0 +msgid "Drives the procurement orders for raw material." +msgstr "" + +#. module: mrp +#: field:mrp.workcenter,costs_general_account_id:0 +msgid "General Account" +msgstr "" + +#. module: mrp +#: report:mrp.production.order:0 +msgid "SO Number" +msgstr "" + +#. module: mrp +#: selection:mrp.production,state:0 +msgid "Done" +msgstr "" + +#. module: mrp +#: model:ir.actions.act_window,name:mrp.mrp_production_action4 +msgid "Manufacturing Orders Waiting Products" +msgstr "" + +#. module: mrp +#: selection:mrp.production,priority:0 +msgid "Not urgent" +msgstr "" + +#. module: mrp +#: field:mrp.production,user_id:0 +msgid "Responsible" +msgstr "" + +#. module: mrp +#: model:ir.actions.act_window,name:mrp.mrp_production_action2 +msgid "Manufacturing Orders To Start" +msgstr "" + +#. module: mrp +#: model:ir.model,name:mrp.model_mrp_workcenter +#: field:mrp.production.workcenter.line,workcenter_id:0 +#: field:mrp.routing.workcenter,workcenter_id:0 +#: view:mrp.workcenter:0 +#: field:report.workcenter.load,workcenter_id:0 +msgid "Work Center" +msgstr "" + +#. module: mrp +#: field:mrp.workcenter,capacity_per_cycle:0 +msgid "Capacity per Cycle" +msgstr "" + +#. module: mrp +#: model:ir.model,name:mrp.model_product_product +#: view:mrp.bom:0 +#: field:mrp.bom,product_id:0 +#: view:mrp.production:0 +#: field:mrp.production,product_id:0 +#: report:mrp.production.order:0 +#: field:mrp.production.product.line,product_id:0 +msgid "Product" +msgstr "" + +#. module: mrp +#: view:mrp.production:0 +#: field:mrp.production,hour_total:0 +msgid "Total Hours" +msgstr "" + +#. module: mrp +#: field:mrp.production,location_src_id:0 +msgid "Raw Materials Location" +msgstr "" + +#. module: mrp +#: view:mrp.product_price:0 +msgid "Print Cost Structure of Product." +msgstr "" + +#. module: mrp +#: field:mrp.bom,product_uos:0 +#: field:mrp.production.product.line,product_uos:0 +msgid "Product UOS" +msgstr "" + +#. module: mrp +#: view:mrp.production:0 +msgid "Consume Products" +msgstr "" + +#. module: mrp +#: model:ir.actions.act_window,name:mrp.act_mrp_product_produce +#: view:mrp.product.produce:0 +#: view:mrp.production:0 +msgid "Produce" +msgstr "" + +#. module: mrp +#: model:process.node,name:mrp.process_node_stock0 +#: model:process.transition,name:mrp.process_transition_servicemto0 +#: model:process.transition,name:mrp.process_transition_stockproduct0 +msgid "Make to Order" +msgstr "" + +#. module: mrp +#: code:addons/mrp/mrp.py:358 +#, python-format +msgid "Copy" +msgstr "" + +#. module: mrp +#: help:mrp.workcenter,note:0 +msgid "" +"Description of the Work Center. Explain here what's a cycle according to " +"this Work Center." +msgstr "" + +#. module: mrp +#: view:mrp.production.lot.line:0 +msgid "Production Products" +msgstr "" + +#. module: mrp +#: field:mrp.production,date_finished:0 +msgid "End Date" +msgstr "" + +#. module: mrp +#: field:mrp.workcenter,resource_id:0 +msgid "Resource" +msgstr "" + +#. module: mrp +#: help:mrp.bom,date_start:0 +#: help:mrp.bom,date_stop:0 +msgid "Validity of this BoM or component. Keep empty if it's always valid." +msgstr "" + +#. module: mrp +#: field:mrp.production,product_uos:0 +msgid "Product UoS" +msgstr "" + +#. module: mrp +#: selection:mrp.production,priority:0 +msgid "Very Urgent" +msgstr "" + +#. module: mrp +#: help:mrp.bom,routing_id:0 +msgid "" +"The list of operations (list of work centers) to produce the finished " +"product. The routing is mainly used to compute work center costs during " +"operations and to plan future loads on work centers based on production " +"planning." +msgstr "" + +#. module: mrp +#: view:change.production.qty:0 +msgid "Approve" +msgstr "" + +#. module: mrp +#: view:mrp.property.group:0 +msgid "Properties categories" +msgstr "" + +#. module: mrp +#: help:mrp.production.workcenter.line,sequence:0 +msgid "Gives the sequence order when displaying a list of work orders." +msgstr "" + +#. module: mrp +#: report:mrp.production.order:0 +msgid "Source Location" +msgstr "" + +#. module: mrp +#: view:mrp.production:0 +#: view:mrp.production.product.line:0 +msgid "Scheduled Products" +msgstr "" + +#. module: mrp +#: view:mrp.production.lot.line:0 +msgid "Production Products Consommation" +msgstr "" + +#. module: mrp +#: model:ir.actions.act_window,name:mrp.act_product_manufacturing_open +#: model:ir.actions.act_window,name:mrp.mrp_production_action +#: model:ir.actions.act_window,name:mrp.mrp_production_action_planning +#: model:ir.ui.menu,name:mrp.menu_mrp_production_action +#: model:ir.ui.menu,name:mrp.menu_mrp_production_order_action +#: view:mrp.production:0 +msgid "Manufacturing Orders" +msgstr "" + +#. module: mrp +#: help:mrp.product.produce,mode:0 +msgid "" +"'Consume only' mode will only consume the products with the quantity " +"selected.\n" +"'Consume & Produce' mode will consume as well as produce the products with " +"the quantity selected and it will finish the production order when total " +"ordered quantities are produced." +msgstr "" + +#. module: mrp +#: view:mrp.production:0 +#: report:mrp.production.order:0 +msgid "Work Orders" +msgstr "" + +#. module: mrp +#: field:mrp.workcenter,costs_cycle:0 +msgid "Cost per cycle" +msgstr "" + +#. module: mrp +#: model:process.node,name:mrp.process_node_serviceproduct0 +#: model:process.node,name:mrp.process_node_serviceproduct1 +msgid "Service" +msgstr "" + +#. module: mrp +#: selection:mrp.production,state:0 +msgid "Cancelled" +msgstr "" + +#. module: mrp +#: help:mrp.bom,product_uom:0 +msgid "" +"UoM (Unit of Measure) is the unit of measurement for the inventory control" +msgstr "" + +#. module: mrp +#: code:addons/mrp/mrp.py:734 +#, python-format +msgid "" +"You are going to consume total %s quantities of \"%s\".\n" +"But you can only consume up to total %s quantities." +msgstr "" + +#. module: mrp +#: model:process.transition,note:mrp.process_transition_bom0 +msgid "" +"The Bill of Material is the product's decomposition. The components (that " +"are products themselves) can also have their own Bill of Material (multi-" +"level)." +msgstr "" + +#. module: mrp +#: field:mrp.bom,company_id:0 +#: field:mrp.production,company_id:0 +#: field:mrp.routing,company_id:0 +#: field:mrp.routing.workcenter,company_id:0 +#: view:mrp.workcenter:0 +msgid "Company" +msgstr "" + +#. module: mrp +#: selection:mrp.workcenter.load,measure_unit:0 +msgid "Amount in hours" +msgstr "" + +#. module: mrp +#: field:mrp.workcenter,time_cycle:0 +msgid "Time for 1 cycle (hour)" +msgstr "" + +#. module: mrp +#: model:ir.actions.report.xml,name:mrp.report_mrp_production_report +#: field:mrp.production.product.line,production_id:0 +#: field:mrp.production.workcenter.line,production_id:0 +#: model:process.node,name:mrp.process_node_production0 +#: model:process.node,name:mrp.process_node_productionorder0 +msgid "Production Order" +msgstr "" + +#. module: mrp +#: model:process.node,note:mrp.process_node_productminimumstockrule0 +msgid "Automatic procurement rule" +msgstr "" + +#. module: mrp +#: view:mrp.production:0 +msgid "Compute Data" +msgstr "" + +#. module: mrp +#: field:mrp.production,product_uos_qty:0 +msgid "Product UoS Qty" +msgstr "" + +#. module: mrp +#: code:addons/mrp/report/price.py:139 +#: view:mrp.bom:0 +#, python-format +msgid "Components" +msgstr "" + +#. module: mrp +#: report:bom.structure:0 +#: model:ir.actions.report.xml,name:mrp.report_bom_structure +msgid "BOM Structure" +msgstr "" + +#. module: mrp +#: field:mrp.bom,date_stop:0 +msgid "Valid Until" +msgstr "" + +#. module: mrp +#: field:mrp.bom,date_start:0 +msgid "Valid From" +msgstr "" + +#. module: mrp +#: selection:mrp.bom,type:0 +msgid "Normal BoM" +msgstr "" + +#. module: mrp +#: field:res.company,manufacturing_lead:0 +msgid "Manufacturing Lead Time" +msgstr "" + +#. module: mrp +#: field:mrp.bom,product_uos_qty:0 +#: field:mrp.production.product.line,product_uos_qty:0 +msgid "Product UOS Qty" +msgstr "" + +#. module: mrp +#: model:ir.actions.act_window,help:mrp.action_report_in_out_picking_tree +msgid "" +"Weekly Stock Value Variation enables you to track the stock value evolution " +"linked to manufacturing activities, receptions of products and delivery " +"orders." +msgstr "" + +#. module: mrp +#: view:mrp.product.produce:0 +msgid "Confirm" +msgstr "" + +#. module: mrp +#: field:mrp.bom,product_efficiency:0 +msgid "Manufacturing Efficiency" +msgstr "" + +#. module: mrp +#: constraint:res.company:0 +msgid "Error! You can not create recursive companies." +msgstr "" + +#. module: mrp +#: help:mrp.bom,active:0 +msgid "" +"If the active field is set to False, it will allow you to hide the bills of " +"material without removing it." +msgstr "" + +#. module: mrp +#: field:mrp.bom,product_rounding:0 +msgid "Product Rounding" +msgstr "" + +#. module: mrp +#: selection:mrp.production,state:0 +msgid "New" +msgstr "" + +#. module: mrp +#: selection:mrp.product.produce,mode:0 +msgid "Consume Only" +msgstr "" + +#. module: mrp +#: view:mrp.production:0 +msgid "Recreate Picking" +msgstr "" + +#. module: mrp +#: help:mrp.bom,type:0 +msgid "" +"If a sub-product is used in several products, it can be useful to create its " +"own BoM. Though if you don't want separated production orders for this sub-" +"product, select Set/Phantom as BoM type. If a Phantom BoM is used for a root " +"product, it will be sold and shipped as a set of components, instead of " +"being produced." +msgstr "" + +#. module: mrp +#: help:mrp.production,state:0 +msgid "" +"When the production order is created the state is set to 'Draft'.\n" +" If the order is confirmed the state is set to 'Waiting Goods'.\n" +" If any exceptions are there, the state is set to 'Picking Exception'. " +" \n" +"If the stock is available then the state is set to 'Ready to Produce'.\n" +" When the production gets started then the state is set to 'In Production'.\n" +" When the production is over, the state is set to 'Done'." +msgstr "" + +#. module: mrp +#: selection:mrp.bom,method:0 +msgid "On Order" +msgstr "" + +#. module: mrp +#: model:ir.ui.menu,name:mrp.menu_mrp_configuration +#: view:res.company:0 +msgid "Configuration" +msgstr "" + +#. module: mrp +#: view:mrp.bom:0 +msgid "Starting Date" +msgstr "" + +#. module: mrp +#: field:mrp.workcenter,time_stop:0 +msgid "Time after prod." +msgstr "" + +#. module: mrp +#: field:mrp.workcenter.load,time_unit:0 +msgid "Type of period" +msgstr "" + +#. module: mrp +#: view:mrp.production:0 +msgid "Total Qty" +msgstr "" + +#. module: mrp +#: field:mrp.routing.workcenter,hour_nbr:0 +msgid "Number of Hours" +msgstr "" + +#. module: mrp +#: view:mrp.workcenter:0 +msgid "Costing Information" +msgstr "" + +#. module: mrp +#: model:process.node,name:mrp.process_node_purchaseprocure0 +msgid "Procurement Orders" +msgstr "" + +#. module: mrp +#: help:mrp.bom,product_rounding:0 +msgid "Rounding applied on the product quantity." +msgstr "" + +#. module: mrp +#: model:process.node,note:mrp.process_node_stock0 +msgid "Assignment from Production or Purchase Order." +msgstr "" + +#. module: mrp +#: field:mrp.routing.workcenter,routing_id:0 +msgid "Parent Routing" +msgstr "" + +#. module: mrp +#: help:mrp.workcenter,time_start:0 +msgid "Time in hours for the setup." +msgstr "" + +#. module: mrp +#: model:product.template,name:mrp.product_orangejuice_product_template +msgid "Orange Juice" +msgstr "" + +#. module: mrp +#: field:mrp.bom.revision,bom_id:0 +#: field:procurement.order,bom_id:0 +msgid "BoM" +msgstr "" + +#. module: mrp +#: model:ir.model,name:mrp.model_report_mrp_inout +#: view:report.mrp.inout:0 +msgid "Stock value variation" +msgstr "" + +#. module: mrp +#: model:process.node,note:mrp.process_node_mts0 +#: model:process.node,note:mrp.process_node_servicemts0 +msgid "Assignment from stock." +msgstr "" + +#. module: mrp +#: selection:mrp.production,state:0 +msgid "Waiting Goods" +msgstr "" + +#. module: mrp +#: field:mrp.bom.revision,last_indice:0 +msgid "last indice" +msgstr "" + +#. module: mrp +#: field:mrp.bom,revision_ids:0 +#: view:mrp.bom.revision:0 +msgid "BoM Revisions" +msgstr "" + +#. module: mrp +#: field:report.mrp.inout,date:0 +#: field:report.workcenter.load,name:0 +msgid "Week" +msgstr "" + +#. module: mrp +#: selection:mrp.production,priority:0 +msgid "Normal" +msgstr "" + +#. module: mrp +#: view:mrp.production:0 +msgid "Production started late" +msgstr "" + +#. module: mrp +#: model:process.node,note:mrp.process_node_routing0 +msgid "Manufacturing Steps." +msgstr "" + +#. module: mrp +#: code:addons/mrp/report/price.py:146 +#: model:ir.actions.report.xml,name:mrp.report_cost_structure +#, python-format +msgid "Cost Structure" +msgstr "" + +#. module: mrp +#: model:res.groups,name:mrp.group_mrp_user +msgid "User" +msgstr "" + +#. module: mrp +#: selection:mrp.product.produce,mode:0 +msgid "Consume & Produce" +msgstr "" + +#. module: mrp +#: field:mrp.bom,bom_id:0 +msgid "Parent BoM" +msgstr "" + +#. module: mrp +#: report:bom.structure:0 +msgid "BOM Ref" +msgstr "" + +#. module: mrp +#: model:ir.actions.act_window,help:mrp.mrp_bom_form_action2 +msgid "" +"Bills of materials components are components and sub-products used to create " +"master bills of materials. Use this menu to search in which BoM a specific " +"component is used." +msgstr "" + +#. module: mrp +#: model:product.uom,name:mrp.product_uom_litre +msgid "Litre" +msgstr "" + +#. module: mrp +#: code:addons/mrp/mrp.py:762 +#, python-format +msgid "" +"You are going to produce total %s quantities of \"%s\".\n" +"But you can only produce up to total %s quantities." +msgstr "" + +#. module: mrp +#: model:process.node,note:mrp.process_node_stockproduct0 +msgid "Product type is Stockable or Consumable." +msgstr "" + +#. module: mrp +#: code:addons/mrp/mrp.py:603 +#: code:addons/mrp/wizard/change_production_qty.py:78 +#: code:addons/mrp/wizard/change_production_qty.py:83 +#, python-format +msgid "Error" +msgstr "" + +#. module: mrp +#: selection:mrp.production,state:0 +msgid "Production Started" +msgstr "" + +#. module: mrp +#: field:mrp.product.produce,product_qty:0 +msgid "Select Quantity" +msgstr "" + +#. module: mrp +#: model:ir.actions.act_window,name:mrp.act_product_product_2_mrp_bom +#: model:ir.actions.act_window,name:mrp.mrp_bom_form_action +#: model:ir.ui.menu,name:mrp.menu_mrp_bom_form_action +#: field:product.product,bom_ids:0 +msgid "Bill of Materials" +msgstr "" + +#. module: mrp +#: model:ir.actions.act_window,name:mrp.mrp_property_action +#: model:ir.ui.menu,name:mrp.menu_mrp_property_action +#: view:mrp.bom:0 +#: field:mrp.bom,property_ids:0 +#: view:mrp.property:0 +#: view:procurement.order:0 +#: field:procurement.order,property_ids:0 +msgid "Properties" +msgstr "" + +#. module: mrp +#: view:mrp.routing.workcenter:0 +#: view:mrp.workcenter:0 +msgid "General Information" +msgstr "" + +#. module: mrp +#: view:mrp.production:0 +msgid "Productions" +msgstr "" + +#. module: mrp +#: model:ir.model,name:mrp.model_mrp_routing +#: view:mrp.bom:0 +#: field:mrp.bom,routing_id:0 +#: view:mrp.production:0 +#: field:mrp.production,routing_id:0 +#: view:mrp.routing:0 +#: model:process.node,name:mrp.process_node_routing0 +msgid "Routing" +msgstr "" + +#. module: mrp +#: field:mrp.production,date_planned:0 +msgid "Scheduled date" +msgstr "" + +#. module: mrp +#: constraint:stock.move:0 +msgid "You must assign a production lot for this product" +msgstr "" + +#. module: mrp +#: field:stock.move,production_id:0 +msgid "Production" +msgstr "" + +#. module: mrp +#: model:ir.model,name:mrp.model_mrp_production_workcenter_line +#: field:mrp.production.workcenter.line,name:0 +msgid "Work Order" +msgstr "" + +#. module: mrp +#: view:board.board:0 +msgid "Procurements in Exception" +msgstr "" + +#. module: mrp +#: model:process.transition,name:mrp.process_transition_minimumstockprocure0 +msgid "'Minimum stock rule' material" +msgstr "" + +#. module: mrp +#: model:ir.model,name:mrp.model_mrp_product_price +msgid "Product Price" +msgstr "" + +#. module: mrp +#: model:ir.model,name:mrp.model_stock_move_split +msgid "Split in Production lots" +msgstr "" + +#. module: mrp +#: view:change.production.qty:0 +msgid "Change Quantity" +msgstr "" + +#. module: mrp +#: view:change.production.qty:0 +#: model:ir.actions.act_window,name:mrp.action_change_production_qty +msgid "Change Product Qty" +msgstr "" + +#. module: mrp +#: view:mrp.bom.revision:0 +#: field:mrp.bom.revision,description:0 +#: view:mrp.property:0 +#: view:mrp.property.group:0 +#: field:mrp.routing,note:0 +#: view:mrp.routing.workcenter:0 +#: field:mrp.routing.workcenter,note:0 +#: view:mrp.workcenter:0 +#: field:mrp.workcenter,note:0 +msgid "Description" +msgstr "" + +#. module: mrp +#: view:board.board:0 +msgid "Manufacturing board" +msgstr "" + +#. module: mrp +#: field:mrp.production,date_planned_end:0 +msgid "Scheduled End Date" +msgstr "" + +#. module: mrp +#: model:process.node,note:mrp.process_node_procureproducts0 +msgid "The way to procurement depends on the product type." +msgstr "" + +#. module: mrp +#: model:ir.ui.menu,name:mrp.menu_mrp_manufacturing +msgid "Manufacturing" +msgstr "" + +#. module: mrp +#: view:board.board:0 +msgid "Next Production Orders" +msgstr "" + +#. module: mrp +#: model:ir.actions.act_window,name:mrp.mrp_property_group_action +#: model:ir.ui.menu,name:mrp.menu_mrp_property_group_action +msgid "Property Groups" +msgstr "" + +#. module: mrp +#: model:process.transition,note:mrp.process_transition_procurestockableproduct0 +msgid "" +"Depending on the chosen method to supply the stockable products, the " +"procurement order creates a RFQ, a production order, ... " +msgstr "" + +#. module: mrp +#: code:addons/mrp/mrp.py:874 +#: code:addons/mrp/mrp.py:929 +#: code:addons/mrp/mrp.py:954 +#, python-format +msgid "PROD: %s" +msgstr "" + +#. module: mrp +#: help:mrp.workcenter,time_stop:0 +msgid "Time in hours for the cleaning." +msgstr "" + +#. module: mrp +#: model:process.transition,name:mrp.process_transition_purchaseprocure0 +msgid "Automatic RFQ" +msgstr "" + +#. module: mrp +#: model:process.transition,note:mrp.process_transition_servicemto0 +msgid "" +"If the service has a 'Produce' supply method, this creates a task in the " +"project management module of OpenERP." +msgstr "" + +#. module: mrp +#: model:process.transition,note:mrp.process_transition_productionprocureproducts0 +msgid "" +"In order to supply raw material (to be purchased or produced), the " +"production order creates as much procurement orders as components listed in " +"the BOM, through a run of the schedulers (MRP)." +msgstr "" + +#. module: mrp +#: help:mrp.product_price,number:0 +msgid "" +"Specify quantity of products to produce or buy. Report of Cost structure " +"will be displayed base on this quantity." +msgstr "" + +#. module: mrp +#: selection:mrp.bom,method:0 +msgid "On Stock" +msgstr "" + +#. module: mrp +#: field:mrp.bom,sequence:0 +#: report:mrp.production.order:0 +#: field:mrp.production.workcenter.line,sequence:0 +#: field:mrp.routing.workcenter,sequence:0 +msgid "Sequence" +msgstr "" + +#. module: mrp +#: model:ir.ui.menu,name:mrp.menu_view_resource_calendar_leaves_search_mrp +msgid "Resource Leaves" +msgstr "" + +#. module: mrp +#: help:mrp.bom,sequence:0 +msgid "Gives the sequence order when displaying a list of bills of material." +msgstr "" + +#. module: mrp +#: view:mrp.production:0 +#: field:mrp.production,move_lines:0 +#: report:mrp.production.order:0 +msgid "Products to Consume" +msgstr "" diff --git a/addons/product_manufacturer/i18n/nb.po b/addons/product_manufacturer/i18n/nb.po new file mode 100644 index 00000000000..8646155eb4a --- /dev/null +++ b/addons/product_manufacturer/i18n/nb.po @@ -0,0 +1,77 @@ +# Norwegian Bokmal translation for openobject-addons +# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012 +# This file is distributed under the same license as the openobject-addons package. +# FIRST AUTHOR , 2012. +# +msgid "" +msgstr "" +"Project-Id-Version: openobject-addons\n" +"Report-Msgid-Bugs-To: FULL NAME \n" +"POT-Creation-Date: 2012-02-08 00:37+0000\n" +"PO-Revision-Date: 2012-07-22 21:31+0000\n" +"Last-Translator: FULL NAME \n" +"Language-Team: Norwegian Bokmal \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2012-07-23 05:17+0000\n" +"X-Generator: Launchpad (build 15654)\n" + +#. module: product_manufacturer +#: field:product.product,manufacturer_pref:0 +msgid "Manufacturer Product Code" +msgstr "" + +#. module: product_manufacturer +#: model:ir.model,name:product_manufacturer.model_product_product +#: field:product.manufacturer.attribute,product_id:0 +msgid "Product" +msgstr "Produkt" + +#. module: product_manufacturer +#: view:product.manufacturer.attribute:0 +msgid "Product Template Name" +msgstr "Produkt template navn" + +#. module: product_manufacturer +#: model:ir.model,name:product_manufacturer.model_product_manufacturer_attribute +msgid "Product attributes" +msgstr "Produkt attributter" + +#. module: product_manufacturer +#: view:product.manufacturer.attribute:0 +#: view:product.product:0 +msgid "Product Attributes" +msgstr "" + +#. module: product_manufacturer +#: field:product.manufacturer.attribute,name:0 +msgid "Attribute" +msgstr "Attributt" + +#. module: product_manufacturer +#: field:product.manufacturer.attribute,value:0 +msgid "Value" +msgstr "Verdi" + +#. module: product_manufacturer +#: constraint:product.product:0 +msgid "Error: Invalid ean code" +msgstr "Feil: Ugyldig ean kode" + +#. module: product_manufacturer +#: view:product.product:0 +#: field:product.product,attribute_ids:0 +msgid "Attributes" +msgstr "Attributter" + +#. module: product_manufacturer +#: field:product.product,manufacturer_pname:0 +msgid "Manufacturer Product Name" +msgstr "Produsents produktnavn" + +#. module: product_manufacturer +#: view:product.product:0 +#: field:product.product,manufacturer:0 +msgid "Manufacturer" +msgstr "Produsent" diff --git a/addons/purchase_requisition/i18n/nb.po b/addons/purchase_requisition/i18n/nb.po new file mode 100644 index 00000000000..aba3b5d4984 --- /dev/null +++ b/addons/purchase_requisition/i18n/nb.po @@ -0,0 +1,444 @@ +# Norwegian Bokmal translation for openobject-addons +# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012 +# This file is distributed under the same license as the openobject-addons package. +# FIRST AUTHOR , 2012. +# +msgid "" +msgstr "" +"Project-Id-Version: openobject-addons\n" +"Report-Msgid-Bugs-To: FULL NAME \n" +"POT-Creation-Date: 2012-02-08 00:37+0000\n" +"PO-Revision-Date: 2012-07-23 10:33+0000\n" +"Last-Translator: FULL NAME \n" +"Language-Team: Norwegian Bokmal \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2012-07-24 04:52+0000\n" +"X-Generator: Launchpad (build 15668)\n" + +#. module: purchase_requisition +#: sql_constraint:purchase.order:0 +msgid "Order Reference must be unique per Company!" +msgstr "Ordrereferanse må være unik pr. firma!" + +#. module: purchase_requisition +#: view:purchase.requisition:0 +#: selection:purchase.requisition,state:0 +msgid "In Progress" +msgstr "I arbeid" + +#. module: purchase_requisition +#: code:addons/purchase_requisition/wizard/purchase_requisition_partner.py:42 +#, python-format +msgid "No Product in Tender" +msgstr "Ikke noe produkt i tilbudet" + +#. module: purchase_requisition +#: view:purchase.order:0 +msgid "Requisition" +msgstr "Rekvisisjon" + +#. module: purchase_requisition +#: view:purchase.requisition:0 +#: field:purchase.requisition,user_id:0 +msgid "Responsible" +msgstr "Ansvarlig" + +#. module: purchase_requisition +#: view:purchase.requisition.partner:0 +msgid "Create Quotation" +msgstr "Lag tilbud" + +#. module: purchase_requisition +#: view:purchase.requisition:0 +msgid "Group By..." +msgstr "Grupper etter..." + +#. module: purchase_requisition +#: view:purchase.requisition:0 +#: field:purchase.requisition,state:0 +msgid "State" +msgstr "Status" + +#. module: purchase_requisition +#: view:purchase.requisition:0 +msgid "Purchase Requisition in negociation" +msgstr "Innkjøpsrekvisisjon i forhandling" + +#. module: purchase_requisition +#: report:purchase.requisition:0 +msgid "Supplier" +msgstr "Leverandør" + +#. module: purchase_requisition +#: view:purchase.requisition:0 +#: selection:purchase.requisition,state:0 +msgid "New" +msgstr "Ny" + +#. module: purchase_requisition +#: report:purchase.requisition:0 +msgid "Product Detail" +msgstr "produktdetaljer" + +#. module: purchase_requisition +#: report:purchase.requisition:0 +#: field:purchase.requisition,date_start:0 +msgid "Requisition Date" +msgstr "Rekvisisjonsdato" + +#. module: purchase_requisition +#: model:ir.actions.act_window,name:purchase_requisition.action_purchase_requisition_partner +#: model:ir.actions.report.xml,name:purchase_requisition.report_purchase_requisition +#: model:ir.model,name:purchase_requisition.model_purchase_requisition +#: model:ir.module.category,name:purchase_requisition.module_category_purchase_requisition +#: field:product.product,purchase_requisition:0 +#: field:purchase.order,requisition_id:0 +#: view:purchase.requisition:0 +#: field:purchase.requisition.line,requisition_id:0 +#: view:purchase.requisition.partner:0 +msgid "Purchase Requisition" +msgstr "Innkjøpsrekvisisjon" + +#. module: purchase_requisition +#: model:ir.model,name:purchase_requisition.model_purchase_requisition_line +msgid "Purchase Requisition Line" +msgstr "Innkjøpsrekvisisjonslinje" + +#. module: purchase_requisition +#: view:purchase.order:0 +msgid "Purchase Orders with requisition" +msgstr "Innkjøpsordre med rekvisisjon" + +#. module: purchase_requisition +#: model:ir.model,name:purchase_requisition.model_product_product +#: field:purchase.requisition.line,product_id:0 +msgid "Product" +msgstr "Produkt" + +#. module: purchase_requisition +#: view:purchase.requisition:0 +msgid "Quotations" +msgstr "Tilbud" + +#. module: purchase_requisition +#: report:purchase.requisition:0 +#: field:purchase.requisition,description:0 +msgid "Description" +msgstr "Beskrivelse" + +#. module: purchase_requisition +#: help:product.product,purchase_requisition:0 +msgid "" +"Check this box so that requisitions generates purchase requisitions instead " +"of directly requests for quotations." +msgstr "" + +#. module: purchase_requisition +#: code:addons/purchase_requisition/purchase_requisition.py:136 +#, python-format +msgid "Warning" +msgstr "Advarsel" + +#. module: purchase_requisition +#: report:purchase.requisition:0 +msgid "Type" +msgstr "Type" + +#. module: purchase_requisition +#: field:purchase.requisition,company_id:0 +#: field:purchase.requisition.line,company_id:0 +msgid "Company" +msgstr "Firma" + +#. module: purchase_requisition +#: view:purchase.requisition:0 +msgid "Request a Quotation" +msgstr "Be om tilbud" + +#. module: purchase_requisition +#: selection:purchase.requisition,exclusive:0 +msgid "Multiple Requisitions" +msgstr "" + +#. module: purchase_requisition +#: report:purchase.requisition:0 +#: field:purchase.requisition.line,product_uom_id:0 +msgid "Product UoM" +msgstr "Produkt måleenhet" + +#. module: purchase_requisition +#: view:purchase.requisition:0 +msgid "Approved by Supplier" +msgstr "Godkjent av leverandør" + +#. module: purchase_requisition +#: view:purchase.requisition:0 +msgid "Reset to Draft" +msgstr "Sett tilbake til utkast" + +#. module: purchase_requisition +#: view:purchase.requisition:0 +msgid "Current Purchase Requisition" +msgstr "Gjeldende innkjøpsrekvisisjon" + +#. module: purchase_requisition +#: model:res.groups,name:purchase_requisition.group_purchase_requisition_user +msgid "User" +msgstr "Bruker" + +#. module: purchase_requisition +#: field:purchase.requisition.partner,partner_address_id:0 +msgid "Address" +msgstr "Adresse" + +#. module: purchase_requisition +#: report:purchase.requisition:0 +msgid "Order Reference" +msgstr "Ordrereferanse" + +#. module: purchase_requisition +#: model:ir.actions.act_window,help:purchase_requisition.action_purchase_requisition +msgid "" +"A purchase requisition is the step before a request for quotation. In a " +"purchase requisition (or purchase tender), you can record the products you " +"need to buy and trigger the creation of RfQs to suppliers. After the " +"negotiation, once you have reviewed all the supplier's offers, you can " +"validate some and cancel others." +msgstr "" + +#. module: purchase_requisition +#: field:purchase.requisition.line,product_qty:0 +msgid "Quantity" +msgstr "Kvantum" + +#. module: purchase_requisition +#: view:purchase.requisition:0 +msgid "Unassigned Requisition" +msgstr "" + +#. module: purchase_requisition +#: model:ir.actions.act_window,name:purchase_requisition.action_purchase_requisition +#: model:ir.ui.menu,name:purchase_requisition.menu_purchase_requisition_pro_mgt +msgid "Purchase Requisitions" +msgstr "Innkjøpsrekvisisjoner" + +#. module: purchase_requisition +#: code:addons/purchase_requisition/purchase_requisition.py:136 +#, python-format +msgid "" +"You have already one %s purchase order for this partner, you must cancel " +"this purchase order to create a new quotation." +msgstr "" + +#. module: purchase_requisition +#: view:purchase.requisition:0 +msgid "End Date" +msgstr "Sluttdato" + +#. module: purchase_requisition +#: report:purchase.requisition:0 +#: field:purchase.requisition,name:0 +msgid "Requisition Reference" +msgstr "Rekvisisjonsreferanse" + +#. module: purchase_requisition +#: field:purchase.requisition,line_ids:0 +msgid "Products to Purchase" +msgstr "" + +#. module: purchase_requisition +#: field:purchase.requisition,date_end:0 +msgid "Requisition Deadline" +msgstr "" + +#. module: purchase_requisition +#: view:purchase.requisition:0 +msgid "Search Purchase Requisition" +msgstr "Søk innkjøpsrekvisisjon" + +#. module: purchase_requisition +#: view:purchase.requisition:0 +msgid "Notes" +msgstr "Notater" + +#. module: purchase_requisition +#: report:purchase.requisition:0 +msgid "Date Ordered" +msgstr "Ordredato" + +#. module: purchase_requisition +#: help:purchase.requisition,exclusive:0 +msgid "" +"Purchase Requisition (exclusive): On the confirmation of a purchase order, " +"it cancels the remaining purchase order.\n" +"Purchase Requisition(Multiple): It allows to have multiple purchase " +"orders.On confirmation of a purchase order it does not cancel the remaining " +"orders" +msgstr "" + +#. module: purchase_requisition +#: view:purchase.requisition:0 +msgid "Cancel Purchase Order" +msgstr "Annuller innkjøpsordre" + +#. module: purchase_requisition +#: model:ir.model,name:purchase_requisition.model_purchase_order +#: view:purchase.requisition:0 +msgid "Purchase Order" +msgstr "Innkjøpsordre" + +#. module: purchase_requisition +#: code:addons/purchase_requisition/wizard/purchase_requisition_partner.py:42 +#, python-format +msgid "Error!" +msgstr "Feil!" + +#. module: purchase_requisition +#: field:purchase.requisition,exclusive:0 +msgid "Requisition Type" +msgstr "Rekvisisjonstype" + +#. module: purchase_requisition +#: view:purchase.requisition:0 +msgid "New Purchase Requisition" +msgstr "Ny innkjøpsrekvisisjon" + +#. module: purchase_requisition +#: view:purchase.requisition:0 +msgid "Products" +msgstr "Produkter" + +#. module: purchase_requisition +#: view:purchase.requisition:0 +msgid "Order Date" +msgstr "Ordredato" + +#. module: purchase_requisition +#: report:purchase.requisition:0 +msgid "]" +msgstr "]" + +#. module: purchase_requisition +#: selection:purchase.requisition,state:0 +msgid "Cancelled" +msgstr "Kansellert" + +#. module: purchase_requisition +#: report:purchase.requisition:0 +msgid "[" +msgstr "[" + +#. module: purchase_requisition +#: model:ir.model,name:purchase_requisition.model_purchase_requisition_partner +msgid "Purchase Requisition Partner" +msgstr "Innkjøpsrekvisisjons partner" + +#. module: purchase_requisition +#: view:purchase.requisition:0 +msgid "Start" +msgstr "Start" + +#. module: purchase_requisition +#: report:purchase.requisition:0 +msgid "Quotation Detail" +msgstr "Tilbudsdetaljer" + +#. module: purchase_requisition +#: report:purchase.requisition:0 +msgid "Purchase for Requisitions" +msgstr "" + +#. module: purchase_requisition +#: model:ir.actions.act_window,name:purchase_requisition.act_res_partner_2_purchase_order +msgid "Purchase orders" +msgstr "Innkjøpsordre" + +#. module: purchase_requisition +#: report:purchase.requisition:0 +#: view:purchase.requisition:0 +#: field:purchase.requisition,origin:0 +msgid "Origin" +msgstr "Opprinnelse" + +#. module: purchase_requisition +#: view:purchase.requisition:0 +msgid "Reference" +msgstr "Referanse" + +#. module: purchase_requisition +#: model:ir.model,name:purchase_requisition.model_procurement_order +msgid "Procurement" +msgstr "Innkjøp" + +#. module: purchase_requisition +#: field:purchase.requisition,warehouse_id:0 +msgid "Warehouse" +msgstr "Lager" + +#. module: purchase_requisition +#: field:procurement.order,requisition_id:0 +msgid "Latest Requisition" +msgstr "Siste rekvisisjon" + +#. module: purchase_requisition +#: report:purchase.requisition:0 +msgid "Qty" +msgstr "Ant" + +#. module: purchase_requisition +#: selection:purchase.requisition,exclusive:0 +msgid "Purchase Requisition (exclusive)" +msgstr "Innkjøpsrekvisisjon (eksklusiv)" + +#. module: purchase_requisition +#: model:res.groups,name:purchase_requisition.group_purchase_requisition_manager +msgid "Manager" +msgstr "Manager" + +#. module: purchase_requisition +#: constraint:product.product:0 +msgid "Error: Invalid ean code" +msgstr "Feil: Ugyldig ean kode" + +#. module: purchase_requisition +#: view:purchase.requisition:0 +#: selection:purchase.requisition,state:0 +msgid "Done" +msgstr "Fullført" + +#. module: purchase_requisition +#: view:purchase.requisition.partner:0 +msgid "_Cancel" +msgstr "_Avbryt" + +#. module: purchase_requisition +#: view:purchase.requisition:0 +msgid "Confirm Purchase Order" +msgstr "Bekreft innkjøpsordre" + +#. module: purchase_requisition +#: view:purchase.requisition:0 +msgid "Cancel" +msgstr "Kanseller" + +#. module: purchase_requisition +#: field:purchase.requisition.partner,partner_id:0 +msgid "Partner" +msgstr "Partner" + +#. module: purchase_requisition +#: view:purchase.requisition:0 +msgid "Start Date" +msgstr "Startdato" + +#. module: purchase_requisition +#: view:purchase.requisition:0 +msgid "Unassigned" +msgstr "Ikke tildelt" + +#. module: purchase_requisition +#: field:purchase.requisition,purchase_ids:0 +msgid "Purchase Orders" +msgstr "Innkjøpsordre" diff --git a/addons/sale_analytic_plans/i18n/nb.po b/addons/sale_analytic_plans/i18n/nb.po new file mode 100644 index 00000000000..c234f234d72 --- /dev/null +++ b/addons/sale_analytic_plans/i18n/nb.po @@ -0,0 +1,28 @@ +# Norwegian Bokmal translation for openobject-addons +# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012 +# This file is distributed under the same license as the openobject-addons package. +# FIRST AUTHOR , 2012. +# +msgid "" +msgstr "" +"Project-Id-Version: openobject-addons\n" +"Report-Msgid-Bugs-To: FULL NAME \n" +"POT-Creation-Date: 2012-02-08 00:37+0000\n" +"PO-Revision-Date: 2012-07-22 21:14+0000\n" +"Last-Translator: FULL NAME \n" +"Language-Team: Norwegian Bokmal \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2012-07-23 05:17+0000\n" +"X-Generator: Launchpad (build 15654)\n" + +#. module: sale_analytic_plans +#: field:sale.order.line,analytics_id:0 +msgid "Analytic Distribution" +msgstr "Analytisk Distribusjon" + +#. module: sale_analytic_plans +#: model:ir.model,name:sale_analytic_plans.model_sale_order_line +msgid "Sales Order Line" +msgstr "Salgsordrelinje" diff --git a/addons/sale_margin/i18n/nb.po b/addons/sale_margin/i18n/nb.po new file mode 100644 index 00000000000..7db7e12a698 --- /dev/null +++ b/addons/sale_margin/i18n/nb.po @@ -0,0 +1,52 @@ +# Norwegian Bokmal translation for openobject-addons +# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012 +# This file is distributed under the same license as the openobject-addons package. +# FIRST AUTHOR , 2012. +# +msgid "" +msgstr "" +"Project-Id-Version: openobject-addons\n" +"Report-Msgid-Bugs-To: FULL NAME \n" +"POT-Creation-Date: 2012-02-08 00:37+0000\n" +"PO-Revision-Date: 2012-07-22 21:27+0000\n" +"Last-Translator: FULL NAME \n" +"Language-Team: Norwegian Bokmal \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2012-07-23 05:17+0000\n" +"X-Generator: Launchpad (build 15654)\n" + +#. module: sale_margin +#: sql_constraint:sale.order:0 +msgid "Order Reference must be unique per Company!" +msgstr "Ordrereferanse må være unik pr. firma!" + +#. module: sale_margin +#: field:sale.order.line,purchase_price:0 +msgid "Cost Price" +msgstr "Kostpris" + +#. module: sale_margin +#: model:ir.model,name:sale_margin.model_sale_order +msgid "Sales Order" +msgstr "Salgsordre" + +#. module: sale_margin +#: help:sale.order,margin:0 +msgid "" +"It gives profitability by calculating the difference between the Unit Price " +"and Cost Price." +msgstr "" +"Fortjeneste oppnås ved å beregne differansen mellom enhetspris og kostpris" + +#. module: sale_margin +#: field:sale.order,margin:0 +#: field:sale.order.line,margin:0 +msgid "Margin" +msgstr "Margin" + +#. module: sale_margin +#: model:ir.model,name:sale_margin.model_sale_order_line +msgid "Sales Order Line" +msgstr "Salgsordrelinje" diff --git a/addons/sale_mrp/i18n/nb.po b/addons/sale_mrp/i18n/nb.po new file mode 100644 index 00000000000..4b6589b24cc --- /dev/null +++ b/addons/sale_mrp/i18n/nb.po @@ -0,0 +1,53 @@ +# Norwegian Bokmal translation for openobject-addons +# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012 +# This file is distributed under the same license as the openobject-addons package. +# FIRST AUTHOR , 2012. +# +msgid "" +msgstr "" +"Project-Id-Version: openobject-addons\n" +"Report-Msgid-Bugs-To: FULL NAME \n" +"POT-Creation-Date: 2012-02-08 00:37+0000\n" +"PO-Revision-Date: 2012-07-22 20:19+0000\n" +"Last-Translator: FULL NAME \n" +"Language-Team: Norwegian Bokmal \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2012-07-23 05:17+0000\n" +"X-Generator: Launchpad (build 15654)\n" + +#. module: sale_mrp +#: help:mrp.production,sale_ref:0 +msgid "Indicate the Customer Reference from sales order." +msgstr "Viser kundereferansen fra salgsordren" + +#. module: sale_mrp +#: field:mrp.production,sale_ref:0 +msgid "Sales Reference" +msgstr "Salgsreferanse" + +#. module: sale_mrp +#: model:ir.model,name:sale_mrp.model_mrp_production +msgid "Manufacturing Order" +msgstr "Produksjonsordre" + +#. module: sale_mrp +#: field:mrp.production,sale_name:0 +msgid "Sales Name" +msgstr "Salgsnavn" + +#. module: sale_mrp +#: sql_constraint:mrp.production:0 +msgid "Reference must be unique per Company!" +msgstr "Referanse må være unik pr firma!" + +#. module: sale_mrp +#: constraint:mrp.production:0 +msgid "Order quantity cannot be negative or zero!" +msgstr "Ordrekvantum kan ikke være negativt eller null!" + +#. module: sale_mrp +#: help:mrp.production,sale_name:0 +msgid "Indicate the name of sales order." +msgstr "Angi navnet på salgsordren." diff --git a/addons/sale_order_dates/i18n/nb.po b/addons/sale_order_dates/i18n/nb.po new file mode 100644 index 00000000000..9d4322c8535 --- /dev/null +++ b/addons/sale_order_dates/i18n/nb.po @@ -0,0 +1,58 @@ +# Norwegian Bokmal translation for openobject-addons +# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012 +# This file is distributed under the same license as the openobject-addons package. +# FIRST AUTHOR , 2012. +# +msgid "" +msgstr "" +"Project-Id-Version: openobject-addons\n" +"Report-Msgid-Bugs-To: FULL NAME \n" +"POT-Creation-Date: 2012-02-08 00:37+0000\n" +"PO-Revision-Date: 2012-07-23 10:58+0000\n" +"Last-Translator: FULL NAME \n" +"Language-Team: Norwegian Bokmal \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2012-07-24 04:52+0000\n" +"X-Generator: Launchpad (build 15668)\n" + +#. module: sale_order_dates +#: sql_constraint:sale.order:0 +msgid "Order Reference must be unique per Company!" +msgstr "Ordrereferanse må være unik pr. firma!" + +#. module: sale_order_dates +#: help:sale.order,requested_date:0 +msgid "Date on which customer has requested for sales." +msgstr "Dato som kunden har ønsket for salg." + +#. module: sale_order_dates +#: field:sale.order,commitment_date:0 +msgid "Commitment Date" +msgstr "Bekreftet dato" + +#. module: sale_order_dates +#: field:sale.order,effective_date:0 +msgid "Effective Date" +msgstr "Behandlingsdato" + +#. module: sale_order_dates +#: help:sale.order,effective_date:0 +msgid "Date on which picking is created." +msgstr "Dato hvor plukkingen er gjort." + +#. module: sale_order_dates +#: field:sale.order,requested_date:0 +msgid "Requested Date" +msgstr "Ønsket dato" + +#. module: sale_order_dates +#: model:ir.model,name:sale_order_dates.model_sale_order +msgid "Sales Order" +msgstr "Salgsordre" + +#. module: sale_order_dates +#: help:sale.order,commitment_date:0 +msgid "Date on which delivery of products is to be made." +msgstr "Dato hvor levering av varer skal skje" diff --git a/addons/stock_location/i18n/nb.po b/addons/stock_location/i18n/nb.po new file mode 100644 index 00000000000..9ee7cc50fd3 --- /dev/null +++ b/addons/stock_location/i18n/nb.po @@ -0,0 +1,400 @@ +# Norwegian Bokmal translation for openobject-addons +# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012 +# This file is distributed under the same license as the openobject-addons package. +# FIRST AUTHOR , 2012. +# +msgid "" +msgstr "" +"Project-Id-Version: openobject-addons\n" +"Report-Msgid-Bugs-To: FULL NAME \n" +"POT-Creation-Date: 2012-02-08 00:37+0000\n" +"PO-Revision-Date: 2012-07-22 21:37+0000\n" +"Last-Translator: FULL NAME \n" +"Language-Team: Norwegian Bokmal \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2012-07-23 05:17+0000\n" +"X-Generator: Launchpad (build 15654)\n" + +#. module: stock_location +#: selection:product.pulled.flow,picking_type:0 +#: selection:stock.location.path,picking_type:0 +msgid "Sending Goods" +msgstr "Vareforsendelse" + +#. module: stock_location +#: view:product.product:0 +msgid "Pulled Paths" +msgstr "" + +#. module: stock_location +#: selection:product.pulled.flow,type_proc:0 +msgid "Move" +msgstr "Bevegelse" + +#. module: stock_location +#: model:ir.model,name:stock_location.model_stock_location_path +msgid "Pushed Flows" +msgstr "" + +#. module: stock_location +#: selection:stock.location.path,auto:0 +msgid "Automatic No Step Added" +msgstr "" + +#. module: stock_location +#: view:product.product:0 +msgid "Parameters" +msgstr "Parametere" + +#. module: stock_location +#: field:product.pulled.flow,location_src_id:0 +#: field:stock.location.path,location_from_id:0 +msgid "Source Location" +msgstr "Kildelokasjon" + +#. module: stock_location +#: help:product.pulled.flow,cancel_cascade:0 +msgid "Allow you to cancel moves related to the product pull flow" +msgstr "" + +#. module: stock_location +#: model:ir.model,name:stock_location.model_product_pulled_flow +#: field:product.product,flow_pull_ids:0 +msgid "Pulled Flows" +msgstr "" + +#. module: stock_location +#: constraint:stock.move:0 +msgid "You must assign a production lot for this product" +msgstr "Du må velge en produksjonslot/batch for dette produktet" + +#. module: stock_location +#: help:product.pulled.flow,location_src_id:0 +msgid "Location used by Destination Location to supply" +msgstr "" + +#. module: stock_location +#: selection:product.pulled.flow,picking_type:0 +#: selection:stock.location.path,picking_type:0 +msgid "Internal" +msgstr "Intern" + +#. module: stock_location +#: code:addons/stock_location/procurement_pull.py:98 +#, python-format +msgid "" +"Pulled procurement coming from original location %s, pull rule %s, via " +"original Procurement %s (#%d)" +msgstr "" + +#. module: stock_location +#: model:ir.model,name:stock_location.model_stock_location +msgid "Location" +msgstr "Lokasjon" + +#. module: stock_location +#: field:product.pulled.flow,invoice_state:0 +#: field:stock.location.path,invoice_state:0 +msgid "Invoice Status" +msgstr "Fakturastatus" + +#. module: stock_location +#: help:stock.location.path,auto:0 +msgid "" +"This is used to define paths the product has to follow within the location " +"tree.\n" +"The 'Automatic Move' value will create a stock move after the current one " +"that will be validated automatically. With 'Manual Operation', the stock " +"move has to be validated by a worker. With 'Automatic No Step Added', the " +"location is replaced in the original move." +msgstr "" + +#. module: stock_location +#: view:product.product:0 +msgid "Conditions" +msgstr "Vilkår" + +#. module: stock_location +#: model:stock.location,name:stock_location.location_pack_zone +msgid "Pack Zone" +msgstr "" + +#. module: stock_location +#: model:stock.location,name:stock_location.location_gate_b +msgid "Gate B" +msgstr "Gate B" + +#. module: stock_location +#: model:stock.location,name:stock_location.location_gate_a +msgid "Gate A" +msgstr "Gate A" + +#. module: stock_location +#: selection:product.pulled.flow,type_proc:0 +msgid "Buy" +msgstr "Kjøp" + +#. module: stock_location +#: view:product.product:0 +msgid "Pushed flows" +msgstr "" + +#. module: stock_location +#: model:stock.location,name:stock_location.location_dispatch_zone +msgid "Dispatch Zone" +msgstr "" + +#. module: stock_location +#: model:ir.model,name:stock_location.model_stock_move +msgid "Stock Move" +msgstr "Lagerbevegelse" + +#. module: stock_location +#: view:product.product:0 +msgid "Pulled flows" +msgstr "" + +#. module: stock_location +#: field:product.pulled.flow,company_id:0 +#: field:stock.location.path,company_id:0 +msgid "Company" +msgstr "Firma" + +#. module: stock_location +#: view:product.product:0 +msgid "Logistics Flows" +msgstr "" + +#. module: stock_location +#: help:stock.move,cancel_cascade:0 +msgid "If checked, when this move is cancelled, cancel the linked move too" +msgstr "" + +#. module: stock_location +#: selection:product.pulled.flow,type_proc:0 +msgid "Produce" +msgstr "Produser" + +#. module: stock_location +#: selection:product.pulled.flow,procure_method:0 +msgid "Make to Order" +msgstr "Produser på bestilling(Make to order)" + +#. module: stock_location +#: selection:product.pulled.flow,procure_method:0 +msgid "Make to Stock" +msgstr "Produser til lager" + +#. module: stock_location +#: field:product.pulled.flow,partner_address_id:0 +msgid "Partner Address" +msgstr "Partneradresse" + +#. module: stock_location +#: selection:product.pulled.flow,invoice_state:0 +#: selection:stock.location.path,invoice_state:0 +msgid "To Be Invoiced" +msgstr "Klare til fakturering" + +#. module: stock_location +#: help:stock.location.path,delay:0 +msgid "Number of days to do this transition" +msgstr "" + +#. module: stock_location +#: help:product.pulled.flow,name:0 +msgid "This field will fill the packing Origin and the name of its moves" +msgstr "" + +#. module: stock_location +#: field:product.pulled.flow,type_proc:0 +msgid "Type of Procurement" +msgstr "" + +#. module: stock_location +#: help:product.pulled.flow,company_id:0 +msgid "Is used to know to which company belong packings and moves" +msgstr "" + +#. module: stock_location +#: field:product.pulled.flow,name:0 +msgid "Name" +msgstr "Navn" + +#. module: stock_location +#: help:product.product,path_ids:0 +msgid "" +"These rules set the right path of the product in the whole location tree." +msgstr "" + +#. module: stock_location +#: constraint:stock.move:0 +msgid "You can not move products from or to a location of the type view." +msgstr "Kan ikke flytte produkter til eller fra en lokasjon av typen view." + +#. module: stock_location +#: selection:stock.location.path,auto:0 +msgid "Manual Operation" +msgstr "Manuell operasjon" + +#. module: stock_location +#: model:ir.model,name:stock_location.model_product_product +#: field:product.pulled.flow,product_id:0 +msgid "Product" +msgstr "Produkt" + +#. module: stock_location +#: field:product.pulled.flow,procure_method:0 +msgid "Procure Method" +msgstr "Innkjøpsmetode" + +#. module: stock_location +#: field:product.pulled.flow,picking_type:0 +#: field:stock.location.path,picking_type:0 +msgid "Shipping Type" +msgstr "Forsendelestype" + +#. module: stock_location +#: help:product.pulled.flow,procure_method:0 +msgid "" +"'Make to Stock': When needed, take from the stock or wait until re-" +"supplying. 'Make to Order': When needed, purchase or produce for the " +"procurement request." +msgstr "" +"'Make to Stock': When needed, take from the stock or wait until re-" +"supplying. 'Make to Order': When needed, purchase or produce for the " +"procurement request." + +#. module: stock_location +#: help:product.pulled.flow,location_id:0 +msgid "Is the destination location that needs supplying" +msgstr "" + +#. module: stock_location +#: field:stock.location.path,product_id:0 +msgid "Products" +msgstr "Produkter" + +#. module: stock_location +#: code:addons/stock_location/procurement_pull.py:118 +#, python-format +msgid "Pulled from another location via procurement %d" +msgstr "" + +#. module: stock_location +#: model:stock.location,name:stock_location.stock_location_qualitytest0 +msgid "Quality Control" +msgstr "Kvalitetskontroll" + +#. module: stock_location +#: selection:product.pulled.flow,invoice_state:0 +#: selection:stock.location.path,invoice_state:0 +msgid "Not Applicable" +msgstr "Ikke tilgjengelig" + +#. module: stock_location +#: field:stock.location.path,delay:0 +msgid "Delay (days)" +msgstr "Forsinkelse (dager)" + +#. module: stock_location +#: code:addons/stock_location/procurement_pull.py:67 +#, python-format +msgid "" +"Picking for pulled procurement coming from original location %s, pull rule " +"%s, via original Procurement %s (#%d)" +msgstr "" + +#. module: stock_location +#: field:product.product,path_ids:0 +msgid "Pushed Flow" +msgstr "" + +#. module: stock_location +#: code:addons/stock_location/procurement_pull.py:89 +#, python-format +msgid "" +"Move for pulled procurement coming from original location %s, pull rule %s, " +"via original Procurement %s (#%d)" +msgstr "" + +#. module: stock_location +#: constraint:stock.move:0 +msgid "You try to assign a lot which is not from the same product" +msgstr "Du forsøker å angi en lot som ikke tilhører samme produkt" + +#. module: stock_location +#: model:ir.model,name:stock_location.model_procurement_order +msgid "Procurement" +msgstr "Innkjøp" + +#. module: stock_location +#: field:product.pulled.flow,location_id:0 +#: field:stock.location.path,location_dest_id:0 +msgid "Destination Location" +msgstr "Destinasjons Lokasjon" + +#. module: stock_location +#: field:stock.location.path,auto:0 +#: selection:stock.location.path,auto:0 +msgid "Automatic Move" +msgstr "Automatisk bevegelse" + +#. module: stock_location +#: selection:product.pulled.flow,picking_type:0 +#: selection:stock.location.path,picking_type:0 +msgid "Getting Goods" +msgstr "" + +#. module: stock_location +#: view:product.product:0 +msgid "Action Type" +msgstr "Handlingstype" + +#. module: stock_location +#: constraint:product.product:0 +msgid "Error: Invalid ean code" +msgstr "Feil: Ugyldig ean kode" + +#. module: stock_location +#: help:product.pulled.flow,picking_type:0 +#: help:stock.location.path,picking_type:0 +msgid "" +"Depending on the company, choose whatever you want to receive or send " +"products" +msgstr "" + +#. module: stock_location +#: model:stock.location,name:stock_location.location_order +msgid "Order Processing" +msgstr "" + +#. module: stock_location +#: field:stock.location.path,name:0 +msgid "Operation" +msgstr "Handling" + +#. module: stock_location +#: view:stock.location.path:0 +msgid "Location Paths" +msgstr "" + +#. module: stock_location +#: field:product.pulled.flow,journal_id:0 +#: field:stock.location.path,journal_id:0 +msgid "Journal" +msgstr "Journal" + +#. module: stock_location +#: field:product.pulled.flow,cancel_cascade:0 +#: field:stock.move,cancel_cascade:0 +msgid "Cancel Cascade" +msgstr "" + +#. module: stock_location +#: selection:product.pulled.flow,invoice_state:0 +#: selection:stock.location.path,invoice_state:0 +msgid "Invoiced" +msgstr "Fakturert" diff --git a/addons/stock_planning/i18n/nb.po b/addons/stock_planning/i18n/nb.po new file mode 100644 index 00000000000..4ad1ab6f30c --- /dev/null +++ b/addons/stock_planning/i18n/nb.po @@ -0,0 +1,1178 @@ +# Norwegian Bokmal translation for openobject-addons +# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012 +# This file is distributed under the same license as the openobject-addons package. +# FIRST AUTHOR , 2012. +# +msgid "" +msgstr "" +"Project-Id-Version: openobject-addons\n" +"Report-Msgid-Bugs-To: FULL NAME \n" +"POT-Creation-Date: 2012-02-08 00:37+0000\n" +"PO-Revision-Date: 2012-07-23 11:05+0000\n" +"Last-Translator: FULL NAME \n" +"Language-Team: Norwegian Bokmal \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2012-07-24 04:52+0000\n" +"X-Generator: Launchpad (build 15668)\n" + +#. module: stock_planning +#: code:addons/stock_planning/wizard/stock_planning_createlines.py:73 +#, python-format +msgid "" +"No forecasts for selected period or no products in selected category !" +msgstr "" + +#. module: stock_planning +#: help:stock.planning,stock_only:0 +msgid "" +"Check to calculate stock location of selected warehouse only. If not " +"selected calculation is made for input, stock and output location of " +"warehouse." +msgstr "" + +#. module: stock_planning +#: field:stock.planning,maximum_op:0 +msgid "Maximum Rule" +msgstr "Maksimumsregel" + +#. module: stock_planning +#: view:stock.planning:0 +#: view:stock.sale.forecast:0 +msgid "Group By..." +msgstr "Grupper etter..." + +#. module: stock_planning +#: help:stock.sale.forecast,product_amt:0 +msgid "" +"Forecast value which will be converted to Product Quantity according to " +"prices." +msgstr "" + +#. module: stock_planning +#: code:addons/stock_planning/stock_planning.py:626 +#: code:addons/stock_planning/stock_planning.py:670 +#, python-format +msgid "Incoming Left must be greater than 0 !" +msgstr "" + +#. module: stock_planning +#: help:stock.planning,outgoing_before:0 +msgid "" +"Planned Out in periods before calculated. Between start date of current " +"period and one day before start of calculated period." +msgstr "" + +#. module: stock_planning +#: help:stock.sale.forecast.createlines,warehouse_id:0 +msgid "" +"Warehouse which forecasts will concern. If during stock planning you will " +"need sales forecast for all warehouses choose any warehouse now." +msgstr "" + +#. module: stock_planning +#: field:stock.planning,outgoing_left:0 +msgid "Expected Out" +msgstr "Forventet ut" + +#. module: stock_planning +#: view:stock.sale.forecast:0 +msgid " " +msgstr " " + +#. module: stock_planning +#: field:stock.planning,incoming_left:0 +msgid "Incoming Left" +msgstr "" + +#. module: stock_planning +#: view:stock.sale.forecast.createlines:0 +msgid "Create Forecasts Lines" +msgstr "Lag prognoselinjer" + +#. module: stock_planning +#: help:stock.planning,outgoing:0 +msgid "Quantity of all confirmed outgoing moves in calculated Period." +msgstr "" + +#. module: stock_planning +#: view:stock.period.createlines:0 +msgid "Create Daily Periods" +msgstr "Lag perioder pr dag" + +#. module: stock_planning +#: view:stock.planning:0 +#: field:stock.planning,company_id:0 +#: field:stock.planning.createlines,company_id:0 +#: view:stock.sale.forecast:0 +#: field:stock.sale.forecast,company_id:0 +#: field:stock.sale.forecast.createlines,company_id:0 +msgid "Company" +msgstr "Firma" + +#. module: stock_planning +#: help:stock.planning,warehouse_forecast:0 +msgid "" +"All sales forecasts for selected Warehouse of selected Product during " +"selected Period." +msgstr "" + +#. module: stock_planning +#: view:stock.planning:0 +msgid "Minimum Stock Rule Indicators" +msgstr "" + +#. module: stock_planning +#: help:stock.sale.forecast.createlines,period_id:0 +msgid "Period which forecasts will concern." +msgstr "Perioder som forslaget vil omhandle" + +#. module: stock_planning +#: field:stock.planning,stock_only:0 +msgid "Stock Location Only" +msgstr "Bare algerlokasjon" + +#. module: stock_planning +#: help:stock.planning,already_out:0 +msgid "" +"Quantity which is already dispatched out of this warehouse in current period." +msgstr "" + +#. module: stock_planning +#: field:stock.planning,incoming:0 +msgid "Confirmed In" +msgstr "Bekreftet inn" + +#. module: stock_planning +#: view:stock.planning:0 +msgid "Current Period Situation" +msgstr "" + +#. module: stock_planning +#: model:ir.actions.act_window,help:stock_planning.action_stock_period_createlines_form +msgid "" +"This wizard helps with the creation of stock planning periods. These periods " +"are independent of financial periods. If you need periods other than day-, " +"week- or month-based, you may also add then manually." +msgstr "" + +#. module: stock_planning +#: view:stock.period.createlines:0 +msgid "Create Monthly Periods" +msgstr "Opprett månedlige perioder" + +#. module: stock_planning +#: model:ir.model,name:stock_planning.model_stock_period_createlines +msgid "stock.period.createlines" +msgstr "" + +#. module: stock_planning +#: field:stock.planning,outgoing_before:0 +msgid "Planned Out Before" +msgstr "Planlagt ut før" + +#. module: stock_planning +#: field:stock.planning.createlines,forecasted_products:0 +msgid "All Products with Forecast" +msgstr "Alle produkter med forslag" + +#. module: stock_planning +#: help:stock.planning,maximum_op:0 +msgid "Maximum quantity set in Minimum Stock Rules for this Warehouse" +msgstr "" + +#. module: stock_planning +#: view:stock.sale.forecast:0 +msgid "Periods :" +msgstr "Perioder :" + +#. module: stock_planning +#: help:stock.planning,procure_to_stock:0 +msgid "" +"Check to make procurement to stock location of selected warehouse. If not " +"selected procurement will be made into input location of warehouse." +msgstr "" + +#. module: stock_planning +#: help:stock.planning,already_in:0 +msgid "" +"Quantity which is already picked up to this warehouse in current period." +msgstr "" + +#. module: stock_planning +#: code:addons/stock_planning/wizard/stock_planning_forecast.py:60 +#, python-format +msgid "No products in selected category !" +msgstr "Ingen produkter i valgt kategori!" + +#. module: stock_planning +#: view:stock.sale.forecast:0 +msgid "Stock and Sales Forecast" +msgstr "" + +#. module: stock_planning +#: model:ir.model,name:stock_planning.model_stock_sale_forecast +msgid "stock.sale.forecast" +msgstr "stock.sale.forecast" + +#. module: stock_planning +#: field:stock.planning,to_procure:0 +msgid "Planned In" +msgstr "" + +#. module: stock_planning +#: field:stock.planning,stock_simulation:0 +msgid "Stock Simulation" +msgstr "Lagersimulering" + +#. module: stock_planning +#: model:ir.model,name:stock_planning.model_stock_planning_createlines +msgid "stock.planning.createlines" +msgstr "stock.planning.createlines" + +#. module: stock_planning +#: help:stock.planning,incoming_before:0 +msgid "" +"Confirmed incoming in periods before calculated (Including Already In). " +"Between start date of current period and one day before start of calculated " +"period." +msgstr "" + +#. module: stock_planning +#: view:stock.sale.forecast:0 +msgid "Search Sales Forecast" +msgstr "Søk salgsprognose" + +#. module: stock_planning +#: field:stock.sale.forecast,analyzed_period5_per_user:0 +msgid "This User Period5" +msgstr "" + +#. module: stock_planning +#: help:stock.planning,history:0 +msgid "History of procurement or internal supply of this planning line." +msgstr "" + +#. module: stock_planning +#: help:stock.planning,company_forecast:0 +msgid "" +"All sales forecasts for whole company (for all Warehouses) of selected " +"Product during selected Period." +msgstr "" + +#. module: stock_planning +#: field:stock.sale.forecast,analyzed_period1_per_user:0 +msgid "This User Period1" +msgstr "Denne brukerperiode1" + +#. module: stock_planning +#: field:stock.sale.forecast,analyzed_period3_per_user:0 +msgid "This User Period3" +msgstr "Denne brukerperiode3" + +#. module: stock_planning +#: view:stock.planning:0 +msgid "Stock Planning" +msgstr "" + +#. module: stock_planning +#: field:stock.planning,minimum_op:0 +msgid "Minimum Rule" +msgstr "Minimumsregel" + +#. module: stock_planning +#: view:stock.planning:0 +msgid "Procure Incoming Left" +msgstr "" + +#. module: stock_planning +#: view:stock.planning.createlines:0 +#: view:stock.sale.forecast.createlines:0 +msgid "Create" +msgstr "Opprett" + +#. module: stock_planning +#: model:ir.actions.act_window,name:stock_planning.action_view_stock_planning_form +#: model:ir.ui.menu,name:stock_planning.menu_stock_planning +#: model:ir.ui.menu,name:stock_planning.menu_stock_planning_manual +#: view:stock.planning:0 +msgid "Master Procurement Schedule" +msgstr "" + +#. module: stock_planning +#: field:stock.planning,line_time:0 +msgid "Past/Future" +msgstr "Tidligere/framtidig" + +#. module: stock_planning +#: view:stock.period:0 +#: field:stock.period,state:0 +#: field:stock.planning,state:0 +#: field:stock.sale.forecast,state:0 +msgid "State" +msgstr "Status" + +#. module: stock_planning +#: help:stock.sale.forecast.createlines,product_categ_id:0 +msgid "Product Category of products which created forecasts will concern." +msgstr "" + +#. module: stock_planning +#: model:ir.model,name:stock_planning.model_stock_period +msgid "stock period" +msgstr "lagerperiode" + +#. module: stock_planning +#: model:ir.model,name:stock_planning.model_stock_sale_forecast_createlines +msgid "stock.sale.forecast.createlines" +msgstr "stock.sale.forecast.createlines" + +#. module: stock_planning +#: field:stock.planning,warehouse_id:0 +#: field:stock.planning.createlines,warehouse_id:0 +#: field:stock.sale.forecast,warehouse_id:0 +#: field:stock.sale.forecast.createlines,warehouse_id:0 +msgid "Warehouse" +msgstr "Lager" + +#. module: stock_planning +#: help:stock.planning,stock_simulation:0 +msgid "" +"Stock simulation at the end of selected Period.\n" +" For current period it is: \n" +"Initial Stock - Already Out + Already In - Expected Out + Incoming Left.\n" +"For periods ahead it is: \n" +"Initial Stock - Planned Out Before + Incoming Before - Planned Out + Planned " +"In." +msgstr "" + +#. module: stock_planning +#: help:stock.sale.forecast,analyze_company:0 +msgid "Check this box to see the sales for whole company." +msgstr "Kryss her for å se salget for hele firmaet" + +#. module: stock_planning +#: view:stock.sale.forecast:0 +msgid "Per Department :" +msgstr "Pr. avdeling :" + +#. module: stock_planning +#: field:stock.planning,incoming_before:0 +msgid "Incoming Before" +msgstr "Inngående før" + +#. module: stock_planning +#: code:addons/stock_planning/stock_planning.py:641 +#, python-format +msgid "" +" Procurement created by MPS for user: %s Creation Date: %s " +" \n" +" For period: %s \n" +" according to state: \n" +" Warehouse Forecast: %s \n" +" Initial Stock: %s \n" +" Planned Out: %s Planned In: %s \n" +" Already Out: %s Already In: %s \n" +" Confirmed Out: %s Confirmed In: %s " +" \n" +" Planned Out Before: %s Confirmed In Before: %s " +" \n" +" Expected Out: %s Incoming Left: %s " +" \n" +" Stock Simulation: %s Minimum stock: %s" +msgstr "" + +#. module: stock_planning +#: code:addons/stock_planning/stock_planning.py:626 +#: code:addons/stock_planning/stock_planning.py:670 +#: code:addons/stock_planning/stock_planning.py:672 +#: code:addons/stock_planning/stock_planning.py:674 +#: code:addons/stock_planning/wizard/stock_planning_createlines.py:73 +#: code:addons/stock_planning/wizard/stock_planning_forecast.py:60 +#, python-format +msgid "Error !" +msgstr "Feil!" + +#. module: stock_planning +#: field:stock.sale.forecast,analyzed_user_id:0 +msgid "This User" +msgstr "Denne bruker" + +#. module: stock_planning +#: view:stock.planning:0 +msgid "Forecasts" +msgstr "Prognose" + +#. module: stock_planning +#: view:stock.planning:0 +msgid "Supply from Another Warehouse" +msgstr "Levering fra annet lager" + +#. module: stock_planning +#: view:stock.planning:0 +msgid "Calculate Planning" +msgstr "" + +#. module: stock_planning +#: code:addons/stock_planning/stock_planning.py:146 +#, python-format +msgid "Invalid action !" +msgstr "Ugyldig aksjon!" + +#. module: stock_planning +#: help:stock.planning,stock_start:0 +msgid "Stock quantity one day before current period." +msgstr "Lagerbeholdning en dag før gjeldende periode" + +#. module: stock_planning +#: view:stock.planning:0 +msgid "Procurement history" +msgstr "" + +#. module: stock_planning +#: help:stock.planning,product_uom:0 +msgid "" +"Unit of Measure used to show the quantities of stock calculation.You can use " +"units from default category or from second category (UoS category)." +msgstr "" + +#. module: stock_planning +#: view:stock.period.createlines:0 +msgid "Create Weekly Periods" +msgstr "Lag ukentlige perioder" + +#. module: stock_planning +#: model:ir.actions.act_window,help:stock_planning.action_stock_period_form +msgid "" +"Stock periods are used for stock planning. Stock periods are independent of " +"account periods. You can use wizard for creating periods and review them " +"here." +msgstr "" + +#. module: stock_planning +#: view:stock.planning:0 +msgid "Calculated Period Simulation" +msgstr "" + +#. module: stock_planning +#: view:stock.period.createlines:0 +msgid "Cancel" +msgstr "Kanseller" + +#. module: stock_planning +#: field:stock.sale.forecast,analyzed_period4_per_user:0 +msgid "This User Period4" +msgstr "Denne brukerperiode4" + +#. module: stock_planning +#: view:stock.period:0 +msgid "Stock and Sales Period" +msgstr "Lager og salgsperiode" + +#. module: stock_planning +#: field:stock.planning,company_forecast:0 +msgid "Company Forecast" +msgstr "Firmaprognose" + +#. module: stock_planning +#: help:stock.planning,minimum_op:0 +msgid "Minimum quantity set in Minimum Stock Rules for this Warehouse" +msgstr "" + +#. module: stock_planning +#: view:stock.sale.forecast:0 +msgid "Per User :" +msgstr "Pr. bruker :" + +#. module: stock_planning +#: help:stock.planning.createlines,warehouse_id:0 +msgid "Warehouse which planning will concern." +msgstr "" + +#. module: stock_planning +#: field:stock.sale.forecast,user_id:0 +msgid "Created/Validated by" +msgstr "Laget/godkjent av" + +#. module: stock_planning +#: field:stock.planning,warehouse_forecast:0 +msgid "Warehouse Forecast" +msgstr "Lagerprognose" + +#. module: stock_planning +#: code:addons/stock_planning/stock_planning.py:674 +#, python-format +msgid "" +"You must specify a Source Warehouse different than calculated (destination) " +"Warehouse !" +msgstr "" + +#. module: stock_planning +#: code:addons/stock_planning/stock_planning.py:146 +#, python-format +msgid "Cannot delete a validated sales forecast!" +msgstr "Kan ikke slette en godkjent salgsprognose!" + +#. module: stock_planning +#: field:stock.sale.forecast,analyzed_period5_per_company:0 +msgid "This Company Period5" +msgstr "Dette firmaet periode5" + +#. module: stock_planning +#: field:stock.sale.forecast,product_uom:0 +msgid "Product UoM" +msgstr "Produkt måleenhet" + +#. module: stock_planning +#: field:stock.sale.forecast,analyzed_period1_per_company:0 +msgid "This Company Period1" +msgstr "Dette firmaet periode1" + +#. module: stock_planning +#: field:stock.sale.forecast,analyzed_period2_per_company:0 +msgid "This Company Period2" +msgstr "Dette firmaet periode2" + +#. module: stock_planning +#: field:stock.sale.forecast,analyzed_period3_per_company:0 +msgid "This Company Period3" +msgstr "Dette firmaet periode3" + +#. module: stock_planning +#: field:stock.period,date_start:0 +#: field:stock.period.createlines,date_start:0 +msgid "Start Date" +msgstr "Startdato" + +#. module: stock_planning +#: field:stock.sale.forecast,analyzed_period2_per_user:0 +msgid "This User Period2" +msgstr "Denne brukerperiode2" + +#. module: stock_planning +#: field:stock.planning,confirmed_forecasts_only:0 +msgid "Validated Forecasts" +msgstr "Godkjente prognoser" + +#. module: stock_planning +#: help:stock.planning.createlines,product_categ_id:0 +msgid "" +"Planning will be created for products from Product Category selected by this " +"field. This field is ignored when you check \"All Forecasted Product\" box." +msgstr "" + +#. module: stock_planning +#: field:stock.planning,planned_outgoing:0 +msgid "Planned Out" +msgstr "Planlagt ut" + +#. module: stock_planning +#: field:stock.sale.forecast,product_qty:0 +msgid "Forecast Quantity" +msgstr "Prognose kvantum" + +#. module: stock_planning +#: view:stock.planning:0 +msgid "Forecast" +msgstr "Prognose" + +#. module: stock_planning +#: selection:stock.period,state:0 +#: selection:stock.planning,state:0 +#: selection:stock.sale.forecast,state:0 +msgid "Draft" +msgstr "Utkast" + +#. module: stock_planning +#: view:stock.period:0 +msgid "Closed" +msgstr "Lukket" + +#. module: stock_planning +#: view:stock.planning:0 +#: view:stock.sale.forecast:0 +msgid "Warehouse " +msgstr "" + +#. module: stock_planning +#: help:stock.sale.forecast,product_uom:0 +msgid "" +"Unit of Measure used to show the quantities of stock calculation.You can use " +"units form default category or from second category (UoS category)." +msgstr "" + +#. module: stock_planning +#: view:stock.planning:0 +msgid "Planning and Situation for Calculated Period" +msgstr "" + +#. module: stock_planning +#: help:stock.planning,planned_outgoing:0 +msgid "" +"Enter planned outgoing quantity from selected Warehouse during the selected " +"Period of selected Product. To plan this value look at Confirmed Out or " +"Sales Forecasts. This value should be equal or greater than Confirmed Out." +msgstr "" + +#. module: stock_planning +#: view:stock.period:0 +msgid "Current Periods" +msgstr "Gjeldende perioder" + +#. module: stock_planning +#: view:stock.planning:0 +msgid "Internal Supply" +msgstr "Intern levering" + +#. module: stock_planning +#: code:addons/stock_planning/stock_planning.py:724 +#, python-format +msgid "%s Pick List %s (%s, %s) %s %s \n" +msgstr "" + +#. module: stock_planning +#: model:ir.actions.act_window,name:stock_planning.action_stock_sale_forecast_createlines_form +#: model:ir.ui.menu,name:stock_planning.menu_stock_sale_forecast_createlines +msgid "Create Sales Forecasts" +msgstr "Lag salgsprognoser" + +#. module: stock_planning +#: field:stock.sale.forecast,analyzed_period4_id:0 +msgid "Period4" +msgstr "Periode4" + +#. module: stock_planning +#: field:stock.period,name:0 +#: field:stock.period.createlines,name:0 +msgid "Period Name" +msgstr "Periodenavn" + +#. module: stock_planning +#: field:stock.sale.forecast,analyzed_period2_id:0 +msgid "Period2" +msgstr "Periode2" + +#. module: stock_planning +#: field:stock.sale.forecast,analyzed_period3_id:0 +msgid "Period3" +msgstr "Periode3" + +#. module: stock_planning +#: field:stock.sale.forecast,analyzed_period1_id:0 +msgid "Period1" +msgstr "Periode1" + +#. module: stock_planning +#: model:ir.actions.act_window,help:stock_planning.action_stock_planning_createlines_form +msgid "" +"This wizard helps create MPS planning lines for a given selected period and " +"warehouse, so you don't have to create them one by one. The wizard doesn't " +"duplicate lines if they already exist for this selection." +msgstr "" + +#. module: stock_planning +#: field:stock.planning,outgoing:0 +msgid "Confirmed Out" +msgstr "Bekreftet ut" + +#. module: stock_planning +#: model:ir.actions.act_window,name:stock_planning.action_stock_planning_createlines_form +#: model:ir.ui.menu,name:stock_planning.menu_stock_planning_createlines +#: view:stock.planning.createlines:0 +msgid "Create Stock Planning Lines" +msgstr "Lag lagerprognose linjer" + +#. module: stock_planning +#: view:stock.planning:0 +msgid "General Info" +msgstr "Generell informasjon" + +#. module: stock_planning +#: model:ir.actions.act_window,name:stock_planning.action_view_stock_sale_forecast_form +msgid "Sales Forecast" +msgstr "Salgsprognose" + +#. module: stock_planning +#: field:stock.sale.forecast,analyzed_period1_per_warehouse:0 +msgid "This Warehouse Period1" +msgstr "Dette lager periode1" + +#. module: stock_planning +#: view:stock.sale.forecast:0 +msgid "Sales History" +msgstr "" + +#. module: stock_planning +#: field:stock.planning,supply_warehouse_id:0 +msgid "Source Warehouse" +msgstr "Kilde lager" + +#. module: stock_planning +#: help:stock.sale.forecast,product_qty:0 +msgid "Forecast Product quantity." +msgstr "Prognose prduktkvantum" + +#. module: stock_planning +#: field:stock.planning,stock_supply_location:0 +msgid "Stock Supply Location" +msgstr "" + +#. module: stock_planning +#: help:stock.period.createlines,date_stop:0 +msgid "Ending date for planning period." +msgstr "Sluttdato for planleggingsperiode" + +#. module: stock_planning +#: help:stock.planning.createlines,forecasted_products:0 +msgid "" +"Check this box to create planning for all products having any forecast for " +"selected Warehouse and Period. Product Category field will be ignored." +msgstr "" + +#. module: stock_planning +#: code:addons/stock_planning/stock_planning.py:632 +#: code:addons/stock_planning/stock_planning.py:678 +#: code:addons/stock_planning/stock_planning.py:702 +#, python-format +msgid "MPS(%s) %s" +msgstr "" + +#. module: stock_planning +#: field:stock.planning,already_in:0 +msgid "Already In" +msgstr "Allerede inne" + +#. module: stock_planning +#: field:stock.planning,product_uom_categ:0 +#: field:stock.planning,product_uos_categ:0 +#: field:stock.sale.forecast,product_uom_categ:0 +msgid "Product UoM Category" +msgstr "Produktenhetskategori" + +#. module: stock_planning +#: model:ir.actions.act_window,help:stock_planning.action_view_stock_sale_forecast_form +msgid "" +"This quantity sales forecast is an indication for Stock Planner to make " +"procurement manually or to complement automatic procurement. You can use " +"manual procurement with this forecast when some periods are exceptional for " +"usual minimum stock rules." +msgstr "" + +#. module: stock_planning +#: model:ir.actions.act_window,help:stock_planning.action_view_stock_planning_form +msgid "" +"The Master Procurement Schedule can be the main driver for warehouse " +"replenishment, or can complement the automatic MRP scheduling (minimum stock " +"rules, etc.).\n" +"Each MPS line gives you a pre-computed overview of the incoming and outgoing " +"quantities of a given product for a given Stock Period in a given Warehouse, " +"based on the current and future stock levels,\n" +"as well as the planned stock moves. The forecast quantities can be altered " +"manually, and when satisfied with resulting (simulated) Stock quantity, you " +"can trigger the procurement of what is missing to reach your desired " +"quantities" +msgstr "" + +#. module: stock_planning +#: code:addons/stock_planning/stock_planning.py:685 +#, python-format +msgid "" +"Pick created from MPS by user: %s Creation Date: %s " +" \n" +"For period: %s according to state: \n" +" Warehouse Forecast: %s \n" +" Initial Stock: %s \n" +" Planned Out: %s Planned In: %s \n" +" Already Out: %s Already In: %s \n" +" Confirmed Out: %s Confirmed In: %s \n" +" Planned Out Before: %s Confirmed In Before: %s " +" \n" +" Expected Out: %s Incoming Left: %s \n" +" Stock Simulation: %s Minimum stock: %s " +msgstr "" + +#. module: stock_planning +#: field:stock.planning,period_id:0 +#: field:stock.planning.createlines,period_id:0 +#: field:stock.sale.forecast,period_id:0 +#: field:stock.sale.forecast.createlines,period_id:0 +msgid "Period" +msgstr "Periode" + +#. module: stock_planning +#: field:stock.sale.forecast,product_uos_categ:0 +msgid "Product UoS Category" +msgstr "Produkt salgsenhetskategori" + +#. module: stock_planning +#: field:stock.planning,active_uom:0 +#: field:stock.sale.forecast,active_uom:0 +msgid "Active UoM" +msgstr "Aktiv enhet" + +#. module: stock_planning +#: view:stock.planning:0 +msgid "Search Stock Planning" +msgstr "Søk lagerplanlegging" + +#. module: stock_planning +#: field:stock.sale.forecast.createlines,copy_forecast:0 +msgid "Copy Last Forecast" +msgstr "Kopier siste prognose" + +#. module: stock_planning +#: help:stock.sale.forecast,product_id:0 +msgid "Shows which product this forecast concerns." +msgstr "Viser hvilke produkter som denne pronosen omhandler" + +#. module: stock_planning +#: selection:stock.planning,state:0 +msgid "Done" +msgstr "Utført" + +#. module: stock_planning +#: field:stock.period.createlines,period_ids:0 +msgid "Periods" +msgstr "Perioder" + +#. module: stock_planning +#: model:ir.ui.menu,name:stock_planning.menu_stock_period_creatlines +msgid "Create Stock Periods" +msgstr "Lag lagerperioder" + +#. module: stock_planning +#: view:stock.period:0 +#: selection:stock.period,state:0 +#: view:stock.planning.createlines:0 +#: view:stock.sale.forecast.createlines:0 +msgid "Close" +msgstr "Lukk" + +#. module: stock_planning +#: view:stock.sale.forecast:0 +#: selection:stock.sale.forecast,state:0 +msgid "Validated" +msgstr "Validert" + +#. module: stock_planning +#: view:stock.period:0 +#: selection:stock.period,state:0 +msgid "Open" +msgstr "Åpen" + +#. module: stock_planning +#: help:stock.sale.forecast.createlines,copy_forecast:0 +msgid "Copy quantities from last Stock and Sale Forecast." +msgstr "Kopier kvantum fra siste lager og salgsprognose" + +#. module: stock_planning +#: field:stock.sale.forecast,analyzed_period1_per_dept:0 +msgid "This Dept Period1" +msgstr "Denne avdelingsperiode1" + +#. module: stock_planning +#: field:stock.sale.forecast,analyzed_period3_per_dept:0 +msgid "This Dept Period3" +msgstr "Denne avdelingsperiode3" + +#. module: stock_planning +#: field:stock.sale.forecast,analyzed_period2_per_dept:0 +msgid "This Dept Period2" +msgstr "Denne avdelingsperiode2" + +#. module: stock_planning +#: field:stock.sale.forecast,analyzed_period5_per_dept:0 +msgid "This Dept Period5" +msgstr "Denne avdelingsperiode5" + +#. module: stock_planning +#: field:stock.sale.forecast,analyzed_period4_per_dept:0 +msgid "This Dept Period4" +msgstr "Denne avdelingsperiode4" + +#. module: stock_planning +#: field:stock.sale.forecast,analyzed_period2_per_warehouse:0 +msgid "This Warehouse Period2" +msgstr "Dette lagers periode2" + +#. module: stock_planning +#: field:stock.sale.forecast,analyzed_period3_per_warehouse:0 +msgid "This Warehouse Period3" +msgstr "Dette lagers periode3" + +#. module: stock_planning +#: help:stock.planning,stock_supply_location:0 +msgid "" +"Check to supply from Stock location of Supply Warehouse. If not checked " +"supply will be made from Output location of Supply Warehouse. Used in " +"'Supply from Another Warehouse' with Supply Warehouse." +msgstr "" + +#. module: stock_planning +#: field:stock.sale.forecast,create_uid:0 +msgid "Responsible" +msgstr "Ansvarlig" + +#. module: stock_planning +#: view:stock.sale.forecast:0 +msgid "Default UOM" +msgstr "Standard måleenhet" + +#. module: stock_planning +#: field:stock.sale.forecast,analyzed_period4_per_warehouse:0 +msgid "This Warehouse Period4" +msgstr "Dette lagers periode4" + +#. module: stock_planning +#: field:stock.sale.forecast,analyzed_period5_per_warehouse:0 +msgid "This Warehouse Period5" +msgstr "Dette lagers periode5" + +#. module: stock_planning +#: view:stock.period:0 +msgid "Current" +msgstr "Gjeldende" + +#. module: stock_planning +#: help:stock.planning,supply_warehouse_id:0 +msgid "" +"Warehouse used as source in supply pick move created by 'Supply from Another " +"Warehouse'." +msgstr "" + +#. module: stock_planning +#: model:ir.model,name:stock_planning.model_stock_planning +msgid "stock.planning" +msgstr "stock.planning" + +#. module: stock_planning +#: help:stock.sale.forecast,warehouse_id:0 +msgid "" +"Shows which warehouse this forecast concerns. If during stock planning you " +"will need sales forecast for all warehouses choose any warehouse now." +msgstr "" + +#. module: stock_planning +#: code:addons/stock_planning/stock_planning.py:661 +#, python-format +msgid "%s Procurement (%s, %s) %s %s \n" +msgstr "" + +#. module: stock_planning +#: field:stock.sale.forecast,analyze_company:0 +msgid "Per Company" +msgstr "Pr. firma" + +#. module: stock_planning +#: help:stock.planning,to_procure:0 +msgid "" +"Enter quantity which (by your plan) should come in. Change this value and " +"observe Stock simulation. This value should be equal or greater than " +"Confirmed In." +msgstr "" + +#. module: stock_planning +#: field:stock.sale.forecast,analyzed_period4_per_company:0 +msgid "This Company Period4" +msgstr "Dette firmaets periode4" + +#. module: stock_planning +#: help:stock.planning.createlines,period_id:0 +msgid "Period which planning will concern." +msgstr "Periode som planleggingen omhandler" + +#. module: stock_planning +#: field:stock.planning,already_out:0 +msgid "Already Out" +msgstr "" + +#. module: stock_planning +#: help:stock.planning,product_id:0 +msgid "Product which this planning is created for." +msgstr "Allerede ute" + +#. module: stock_planning +#: view:stock.sale.forecast:0 +msgid "Per Warehouse :" +msgstr "Pr. lager :" + +#. module: stock_planning +#: field:stock.planning,history:0 +msgid "Procurement History" +msgstr "Innkjøpshistorikk" + +#. module: stock_planning +#: help:stock.period.createlines,date_start:0 +msgid "Starting date for planning period." +msgstr "Startdato for planleggingsperioden." + +#. module: stock_planning +#: model:ir.actions.act_window,name:stock_planning.action_stock_period_createlines_form +#: model:ir.actions.act_window,name:stock_planning.action_stock_period_form +#: model:ir.ui.menu,name:stock_planning.menu_stock_period +#: model:ir.ui.menu,name:stock_planning.menu_stock_period_main +#: view:stock.period:0 +#: view:stock.period.createlines:0 +msgid "Stock Periods" +msgstr "Lagerperioder" + +#. module: stock_planning +#: view:stock.planning:0 +msgid "Stock" +msgstr "Lager" + +#. module: stock_planning +#: help:stock.planning,incoming:0 +msgid "Quantity of all confirmed incoming moves in calculated Period." +msgstr "" + +#. module: stock_planning +#: field:stock.period,date_stop:0 +#: field:stock.period.createlines,date_stop:0 +msgid "End Date" +msgstr "Sluttdato" + +#. module: stock_planning +#: view:stock.planning:0 +msgid "No Requisition" +msgstr "Ingen rekvisisjon" + +#. module: stock_planning +#: field:stock.sale.forecast,name:0 +msgid "Name" +msgstr "Navn" + +#. module: stock_planning +#: help:stock.sale.forecast,period_id:0 +msgid "Shows which period this forecast concerns." +msgstr "Viser hvilken periode prognosen omhandler." + +#. module: stock_planning +#: field:stock.planning,product_uom:0 +msgid "UoM" +msgstr "Måleenhet" + +#. module: stock_planning +#: view:stock.period:0 +msgid "Closed Periods" +msgstr "Lukkede perioder" + +#. module: stock_planning +#: view:stock.planning:0 +#: field:stock.planning,product_id:0 +#: view:stock.sale.forecast:0 +#: field:stock.sale.forecast,product_id:0 +msgid "Product" +msgstr "Produkt" + +#. module: stock_planning +#: model:ir.ui.menu,name:stock_planning.menu_stock_sale_forecast +#: model:ir.ui.menu,name:stock_planning.menu_stock_sale_forecast_all +#: view:stock.sale.forecast:0 +msgid "Sales Forecasts" +msgstr "" + +#. module: stock_planning +#: field:stock.planning.createlines,product_categ_id:0 +#: field:stock.sale.forecast.createlines,product_categ_id:0 +msgid "Product Category" +msgstr "Produktkategori" + +#. module: stock_planning +#: code:addons/stock_planning/stock_planning.py:672 +#, python-format +msgid "You must specify a Source Warehouse !" +msgstr "" + +#. module: stock_planning +#: field:stock.planning,procure_to_stock:0 +msgid "Procure To Stock Location" +msgstr "" + +#. module: stock_planning +#: view:stock.sale.forecast:0 +msgid "Approve" +msgstr "Godkjenne" + +#. module: stock_planning +#: help:stock.planning,period_id:0 +msgid "" +"Period for this planning. Requisition will be created for beginning of the " +"period." +msgstr "" + +#. module: stock_planning +#: code:addons/stock_planning/stock_planning.py:631 +#, python-format +msgid "MPS planning for %s" +msgstr "" + +#. module: stock_planning +#: field:stock.planning,stock_start:0 +msgid "Initial Stock" +msgstr "Inngående lager" + +#. module: stock_planning +#: field:stock.sale.forecast,product_amt:0 +msgid "Product Amount" +msgstr "Produktbeløp" + +#. module: stock_planning +#: help:stock.planning,confirmed_forecasts_only:0 +msgid "" +"Check to take validated forecasts only. If not checked system takes " +"validated and draft forecasts." +msgstr "" + +#. module: stock_planning +#: field:stock.sale.forecast,analyzed_period5_id:0 +msgid "Period5" +msgstr "Periode5" + +#. module: stock_planning +#: field:stock.sale.forecast,analyzed_warehouse_id:0 +msgid "This Warehouse" +msgstr "Dette lager" + +#. module: stock_planning +#: help:stock.sale.forecast,user_id:0 +msgid "Shows who created this forecast, or who validated." +msgstr "Viser hvem som laget prognosen, eller godkjente." + +#. module: stock_planning +#: field:stock.sale.forecast,analyzed_team_id:0 +msgid "Sales Team" +msgstr "Salgsteam" + +#. module: stock_planning +#: help:stock.planning,incoming_left:0 +msgid "" +"Quantity left to Planned incoming quantity. This is calculated difference " +"between Planned In and Confirmed In. For current period Already In is also " +"calculated. This value is used to create procurement for lacking quantity." +msgstr "" + +#. module: stock_planning +#: help:stock.planning,outgoing_left:0 +msgid "" +"Quantity expected to go out in selected period besides Confirmed Out. As a " +"difference between Planned Out and Confirmed Out. For current period Already " +"Out is also calculated" +msgstr "" + +#. module: stock_planning +#: view:stock.sale.forecast:0 +msgid "Calculate Sales History" +msgstr "Kalkuler salgshistorikk" + +#. module: stock_planning +#: model:ir.actions.act_window,help:stock_planning.action_stock_sale_forecast_createlines_form +msgid "" +"This wizard helps create many forecast lines at once. After creating them " +"you only have to fill in the forecast quantities. The wizard doesn't " +"duplicate the line when another one exist for the same selection." +msgstr "" + +#~ msgid "Sales history" +#~ msgstr "Salgshistorikk" From bce619aeef25666090490696f524871be08a451b Mon Sep 17 00:00:00 2001 From: "Divyesh Makwana (Open ERP)" Date: Tue, 24 Jul 2012 11:11:32 +0530 Subject: [PATCH 259/349] [IMP] base_calendar : Revert unwanted changes. bzr revid: mdi@tinyerp.com-20120724054132-5fl2alehe7gue3cl --- addons/base_calendar/base_calendar.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/addons/base_calendar/base_calendar.py b/addons/base_calendar/base_calendar.py index 5fef795acec..1c26e93b917 100644 --- a/addons/base_calendar/base_calendar.py +++ b/addons/base_calendar/base_calendar.py @@ -1028,8 +1028,8 @@ class calendar_event(osv.osv): 'id': fields.integer('ID', readonly=True), 'sequence': fields.integer('Sequence'), 'name': fields.char('Description', size=64, required=False, states={'done': [('readonly', True)]}), - 'date': fields.datetime('Date', required=True, states={'done': [('readonly', True)]}), - 'date_deadline': fields.datetime('Deadline', required=True, states={'done': [('readonly', True)]}), + 'date': fields.datetime('Date', states={'done': [('readonly', True)]}), + 'date_deadline': fields.datetime('Deadline', states={'done': [('readonly', True)]}), 'create_date': fields.datetime('Created', readonly=True), 'duration': fields.float('Duration', states={'done': [('readonly', True)]}), 'description': fields.text('Description', states={'done': [('readonly', True)]}), From 7f7595bba73d7face2fab81172131adfdc631753 Mon Sep 17 00:00:00 2001 From: "Ajay Chauhan (OpenERP)" Date: Tue, 24 Jul 2012 11:40:51 +0530 Subject: [PATCH 260/349] [IMP]project_mrp,analytic_contract_project :Fix the problem for creating SO with service type product bzr revid: cha@tinyerp.com-20120724061051-5ojujboykewg0wwy --- .../analytic_contract_project.py | 3 ++- addons/project_mrp/project_procurement.py | 8 ++++---- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/addons/analytic_contract_project/analytic_contract_project.py b/addons/analytic_contract_project/analytic_contract_project.py index 6221617637e..1ffab1246c9 100644 --- a/addons/analytic_contract_project/analytic_contract_project.py +++ b/addons/analytic_contract_project/analytic_contract_project.py @@ -78,6 +78,7 @@ class task(osv.osv): def create(self, cr, uid, vals, context=None): task_id = super(task, self).create(cr, uid, vals, context=context) task_browse = self.browse(cr, uid, task_id, context=context) - self.pool.get('account.analytic.account').message_append_note(cr, uid, [task_browse.project_id.analytic_account_id.id], body=_("Task %s has been created.") % (task_browse.name), context=context) + if task_browse.project_id.analytic_account_id: + self.pool.get('account.analytic.account').message_append_note(cr, uid, [task_browse.project_id.analytic_account_id.id], body=_("Task %s has been created.") % (task_browse.name), context=context) return task_id task() diff --git a/addons/project_mrp/project_procurement.py b/addons/project_mrp/project_procurement.py index 9252e3bbd11..299a74f52aa 100644 --- a/addons/project_mrp/project_procurement.py +++ b/addons/project_mrp/project_procurement.py @@ -45,9 +45,9 @@ class procurement_order(osv.osv): def _convert_qty_company_hours(self, cr, uid, procurement, context=None): product_uom = self.pool.get('product.uom') - company_time_uom_id = self.pool.get('res.users').browse(cr, uid, uid).company_id.project_time_mode_id.id - if procurement.product_uom.id != company_time_uom_id: - planned_hours = product_uom._compute_qty(cr, uid, procurement.product_uom.id, procurement.product_qty, company_time_uom_id) + company_time_uom_id = self.pool.get('res.users').browse(cr, uid, uid).company_id.project_time_mode_id + if procurement.product_uom.id != company_time_uom_id.id and procurement.product_uom.category_id.id == company_time_uom_id.category_id.id: + planned_hours = product_uom._compute_qty(cr, uid, procurement.product_uom.id, procurement.product_qty, company_time_uom_id.id) else: planned_hours = procurement.product_qty return planned_hours @@ -71,7 +71,7 @@ class procurement_order(osv.osv): task_id = project_task.create(cr, uid, { 'name': '%s:%s' % (procurement.origin or '', procurement.product_id.name), 'date_deadline': procurement.date_planned, - 'planned_hours':planned_hours, + 'planned_hours': planned_hours, 'remaining_hours': planned_hours, 'user_id': procurement.product_id.product_manager.id, 'notes': procurement.note, From 6dcf691e70315d70a4a79845da51091866b6c77b Mon Sep 17 00:00:00 2001 From: "Divyesh Makwana (Open ERP)" Date: Tue, 24 Jul 2012 11:53:03 +0530 Subject: [PATCH 261/349] [IMP] project_long_term : Override the 'on_change_template' method. bzr revid: mdi@tinyerp.com-20120724062303-xoc4l9ye72x5lz3f --- addons/project_long_term/project_long_term.py | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/addons/project_long_term/project_long_term.py b/addons/project_long_term/project_long_term.py index a4df1eb6917..25aa98016e9 100644 --- a/addons/project_long_term/project_long_term.py +++ b/addons/project_long_term/project_long_term.py @@ -275,6 +275,13 @@ class account_analytic_account(osv.osv): _columns = { 'use_phases': fields.boolean('Phases Planing', help="Check this field if project manages phases"), } + + def on_change_template(self, cr, uid, ids, template_id, context=None): + res = super(account_analytic_account, self).on_change_template(cr, uid, ids, template_id, context=context) + if template_id and 'value' in res: + template = self.browse(cr, uid, template_id, context=context) + res['value']['use_phases'] = template.use_phases + return res def _trigger_project_creation(self, cr, uid, vals, context=None): res= super(account_analytic_account, self)._trigger_project_creation(cr, uid, vals, context=context) From 9876216c8e54dc7f3805fd74133cbec84a491eb0 Mon Sep 17 00:00:00 2001 From: "Mustufa Rangwala (OpenERP)" Date: Tue, 24 Jul 2012 15:40:05 +0530 Subject: [PATCH 262/349] [IMP] l10n_in: now template will be installed for public and private once module installed bzr revid: mra@tinyerp.com-20120724101005-4y0175vnla1bxtza --- addons/l10n_in/__init__.py | 2 - addons/l10n_in/__openerp__.py | 5 +- addons/l10n_in/l10n_in_installer.py | 68 ----------------------- addons/l10n_in/l10n_in_installer_view.xml | 17 ------ 4 files changed, 4 insertions(+), 88 deletions(-) delete mode 100644 addons/l10n_in/l10n_in_installer.py delete mode 100644 addons/l10n_in/l10n_in_installer_view.xml diff --git a/addons/l10n_in/__init__.py b/addons/l10n_in/__init__.py index 4217c02d152..49a09e5570e 100644 --- a/addons/l10n_in/__init__.py +++ b/addons/l10n_in/__init__.py @@ -19,7 +19,5 @@ # ############################################################################## - -import l10n_in_installer # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/addons/l10n_in/__openerp__.py b/addons/l10n_in/__openerp__.py index 18bc42a80cc..a6786b79b8f 100644 --- a/addons/l10n_in/__openerp__.py +++ b/addons/l10n_in/__openerp__.py @@ -37,8 +37,11 @@ Indian accounting chart and localization. "demo_xml": [], "update_xml": [ "l10n_in_tax_code_template.xml", + "l10n_in_public_chart.xml", + "l10n_in_public_tax_template.xml", + "l10n_in_private_chart.xml", + "l10n_in_private_tax_template.xml", "l10n_in_wizard.xml", - "l10n_in_installer_view.xml", ], "auto_install": False, "installable": True, diff --git a/addons/l10n_in/l10n_in_installer.py b/addons/l10n_in/l10n_in_installer.py deleted file mode 100644 index 0a15d034605..00000000000 --- a/addons/l10n_in/l10n_in_installer.py +++ /dev/null @@ -1,68 +0,0 @@ -# -*- 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 os.path import join as opj -import tools - -class l10n_installer(osv.osv_memory): - _inherit = 'account.installer' - _columns = { - 'company_type': fields.selection([('public_company', 'Public Ltd'), - ('partnership_private_company', 'Private Ltd/Partnership') - ], 'Company Type', required=True, - help='Company Type is used to install Indian chart of accounts as per need of business.'), - } - _defaults = { - 'company_type': 'public_company', - } - - def execute_simple(self, cr, uid, ids, context=None): - if context is None: - context = {} - - res = super(l10n_installer, self).execute_simple(cr, uid, ids, context=context) - - for chart in self.read(cr, uid, ids, context=context): - - if chart['charts'] =='l10n_in' and chart['company_type']=='public_company': - acc_file_path = tools.file_open(opj('l10n_in', 'l10n_in_public_chart.xml')) - - tools.convert_xml_import(cr, 'l10n_in', acc_file_path, {}, 'init', True, None) - acc_file_path.close() - - tax_file_path = tools.file_open(opj('l10n_in', 'l10n_in_public_tax_template.xml')) - tools.convert_xml_import(cr, 'l10n_in', tax_file_path, {}, 'init', True, None) - tax_file_path.close() - - elif chart['charts'] =='l10n_in' and chart['company_type']=='partnership_private_company': - acc_file_path = tools.file_open(opj('l10n_in', 'l10n_in_private_chart.xml')) - - tools.convert_xml_import(cr, 'l10n_in', acc_file_path, {}, 'init', True, None) - acc_file_path.close() - - tax_file_path = tools.file_open(opj('l10n_in', 'l10n_in_private_tax_template.xml')) - tools.convert_xml_import(cr, 'l10n_in', tax_file_path, {}, 'init', True, None) - tax_file_path.close() - - return res - -# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: \ No newline at end of file diff --git a/addons/l10n_in/l10n_in_installer_view.xml b/addons/l10n_in/l10n_in_installer_view.xml deleted file mode 100644 index 63dbe44eabd..00000000000 --- a/addons/l10n_in/l10n_in_installer_view.xml +++ /dev/null @@ -1,17 +0,0 @@ - - - - - account.installer.form - account.installer - form - - - - - - - - - - From ab9071e4775f9f513e3739d0bed16b20f2baceda Mon Sep 17 00:00:00 2001 From: "Mustufa Rangwala (OpenERP)" Date: Tue, 24 Jul 2012 15:54:49 +0530 Subject: [PATCH 263/349] [FIX] Small fix bzr revid: mra@tinyerp.com-20120724102449-3g1b2glwmw0thir7 --- addons/l10n_in/l10n_in_private_tax_template.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/l10n_in/l10n_in_private_tax_template.xml b/addons/l10n_in/l10n_in_private_tax_template.xml index d78dc2cbad4..7aec30f0575 100644 --- a/addons/l10n_in/l10n_in_private_tax_template.xml +++ b/addons/l10n_in/l10n_in_private_tax_template.xml @@ -53,7 +53,7 @@ - + Purchase Tax-15% From ef7909ffe846aa8742b0a0041a70d37e946ff325 Mon Sep 17 00:00:00 2001 From: Stephane Wirtel Date: Tue, 24 Jul 2012 12:51:24 +0200 Subject: [PATCH 264/349] [IMP] mail: We can search via the record_name and the title of a Feed bzr revid: stw@openerp.com-20120724105124-4u33it0hse20ifl1 --- addons/mail/mail_message_view.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/mail/mail_message_view.xml b/addons/mail/mail_message_view.xml index 634b5317d27..eb68ab70a3b 100644 --- a/addons/mail/mail_message_view.xml +++ b/addons/mail/mail_message_view.xml @@ -82,7 +82,7 @@ - + Date: Tue, 24 Jul 2012 16:54:57 +0530 Subject: [PATCH 265/349] [IMP] default value added in mrp_production : default added to location_src_id and location_dest_id bzr revid: rpr@tinyerp.com-20120724112457-euf51mv6h9g8ko3o --- addons/mrp/mrp.py | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/addons/mrp/mrp.py b/addons/mrp/mrp.py index 56ac47095a1..07c8e022e8e 100644 --- a/addons/mrp/mrp.py +++ b/addons/mrp/mrp.py @@ -448,6 +448,14 @@ class mrp_production(osv.osv): result[prod.id] = prod.date_planned[:10] return result + def _src_id_default(self, cr, uid, ids, context=None): + src_location_id = self.pool.get('ir.model.data').get_object(cr, uid, 'stock', 'stock_location_stock', context=context) + return src_location_id.id + + def _dest_id_default(self, cr, uid, ids, context=None): + dest_location_id = self.pool.get('ir.model.data').get_object(cr, uid, 'stock', 'stock_location_stock', context=context) + return dest_location_id.id + _columns = { 'name': fields.char('Reference', size=64, required=True), 'origin': fields.char('Source Document', size=64, help="Reference of the document that generated this production order request."), @@ -496,6 +504,8 @@ class mrp_production(osv.osv): 'product_qty': lambda *a: 1.0, 'name': lambda x, y, z, c: x.pool.get('ir.sequence').get(y, z, 'mrp.production') or '/', 'company_id': lambda self, cr, uid, c: self.pool.get('res.company')._company_default_get(cr, uid, 'mrp.production', context=c), + 'location_src_id': _src_id_default, + 'location_dest_id': _dest_id_default } _sql_constraints = [ ('name_uniq', 'unique(name, company_id)', 'Reference must be unique per Company!'), From 2f10bc40713f3cffddf6d7ad11182bcf08b35642 Mon Sep 17 00:00:00 2001 From: Xavier Morel Date: Tue, 24 Jul 2012 13:56:59 +0200 Subject: [PATCH 266/349] [IMP] validation of search_default values for m2o fields Just because the search_default is an array does not mean it's a name_get apparently: there are many cases of a single id wrapped in an array (``[id]``). So ensure that the search_default is an array *of length 2 whose second element is a string* before considering it a name_get and using it as-is (without resolving the label via an explicit name_get). Also, error out for any m2o search_default which is an array of length > 1 (unless the second element is a string as per description above). bzr revid: xmo@openerp.com-20120724115659-l0n0gjr91bcop13z --- addons/web/static/src/js/search.js | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/addons/web/static/src/js/search.js b/addons/web/static/src/js/search.js index 504510ef133..8de2562a798 100644 --- a/addons/web/static/src/js/search.js +++ b/addons/web/static/src/js/search.js @@ -1475,7 +1475,17 @@ instance.web.search.ManyToOneField = instance.web.search.CharField.extend({ facet_for: function (value) { var self = this; if (value instanceof Array) { - return $.when(facet_from(this, value)); + if (value.length === 2 && _.isString(value[1])) { + return $.when(facet_from(this, value)); + } + if (value.length > 1) { + // more than one search_default m2o id? Should we OR them? + throw new Error( + _("M2O search fields do not currently handle multiple default values")); + } + // there are many cases of {search_default_$m2ofield: [id]}, need + // to handle this as if it were a single value. + value = value[0]; } return this.model.call('name_get', [value], {}).pipe(function (names) { if (_(names).isEmpty()) { return null; } From 43b8224341f98af5c5fa6b1c166cfd8098a954ba Mon Sep 17 00:00:00 2001 From: "Divyesh Makwana (Open ERP)" Date: Tue, 24 Jul 2012 17:39:05 +0530 Subject: [PATCH 267/349] [IMP] sale : Rename 'Partner' into 'Contact'. bzr revid: mdi@tinyerp.com-20120724120905-t6e8keib9l69kcvx --- addons/sale/stock_view.xml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/addons/sale/stock_view.xml b/addons/sale/stock_view.xml index 928eebafcae..2c705e5bddf 100644 --- a/addons/sale/stock_view.xml +++ b/addons/sale/stock_view.xml @@ -10,6 +10,9 @@ + From 28d9a6e28d061afe8810caf52aaee02c565fb83c Mon Sep 17 00:00:00 2001 From: "Divyesh Makwana (Open ERP)" Date: Tue, 24 Jul 2012 18:00:57 +0530 Subject: [PATCH 268/349] [IMP] sale : If the user create a new recod, the invoice control should be 'To Be Invoiced' by default (only from this view). bzr revid: mdi@tinyerp.com-20120724123057-2dwy52a9xmd55515 --- addons/sale/stock_view.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/sale/stock_view.xml b/addons/sale/stock_view.xml index 2c705e5bddf..40de6872be0 100644 --- a/addons/sale/stock_view.xml +++ b/addons/sale/stock_view.xml @@ -74,7 +74,7 @@ form tree,form,calendar [('type','=','out')] - {'default_type': 'out', 'contact_display': 'partner_address', 'search_default_to_invoice': 1, 'search_default_done': 1} + {'default_type': 'out', 'contact_display': 'partner_address', 'search_default_to_invoice': 1, 'search_default_done': 1, 'default_invoice_state': '2binvoiced'} From 56dea51d074304f0820ac3dc745c6c98fbdb65f7 Mon Sep 17 00:00:00 2001 From: "Mayur Maheshwari (OpenERP)" Date: Tue, 24 Jul 2012 18:07:54 +0530 Subject: [PATCH 269/349] [IMP]project: now stage move from kanban it also notify in feeds message bzr revid: mma@tinyerp.com-20120724123754-051kmza6tmpyi8el --- addons/project/project.py | 1 + 1 file changed, 1 insertion(+) diff --git a/addons/project/project.py b/addons/project/project.py index aa9316aec1b..9a5ec1f8a35 100644 --- a/addons/project/project.py +++ b/addons/project/project.py @@ -1089,6 +1089,7 @@ class task(base_stage, osv.osv): #raise osv.except_osv(_('Warning !'), _('Stage is not defined in the project.')) write_vals = vals_reset_kstate if t.stage_id != new_stage else vals super(task,self).write(cr, uid, [t.id], write_vals, context=context) + self.stage_set_send_note(cr, uid, [t.id], new_stage, context=context) result = True else: result = super(task,self).write(cr, uid, ids, vals, context=context) From bfcbca2915722a264403bb7534068d0353a82035 Mon Sep 17 00:00:00 2001 From: "Divyesh Makwana (Open ERP)" Date: Tue, 24 Jul 2012 18:12:50 +0530 Subject: [PATCH 270/349] [IMP] stock : Improved the code. bzr revid: mdi@tinyerp.com-20120724124250-2n5r46c4e1vh4x50 --- addons/stock/wizard/stock_partial_picking.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/addons/stock/wizard/stock_partial_picking.py b/addons/stock/wizard/stock_partial_picking.py index 7edeb694510..24e6375d02d 100644 --- a/addons/stock/wizard/stock_partial_picking.py +++ b/addons/stock/wizard/stock_partial_picking.py @@ -96,11 +96,11 @@ class stock_partial_picking(osv.osv_memory): def default_get(self, cr, uid, fields, context=None): if context is None: context = {} + res = super(stock_partial_picking, self).default_get(cr, uid, fields, context=context) picking_ids = context.get('active_ids', []) if context['active_model'] == 'purchase.order': for purchase_order in self.pool.get('purchase.order').browse(cr, uid, picking_ids, context=context): - picking_ids = [picking.id for picking in purchase_order.picking_ids] - res = super(stock_partial_picking, self).default_get(cr, uid, fields, context=context) + picking_ids = [picking_id.id for picking_id in purchase_order.picking_ids] if not picking_ids or len(picking_ids) != 1: # Partial Picking Processing may only be done for one picking at a time return res From 6b719b708f18a18543368b18031643f98b00910b Mon Sep 17 00:00:00 2001 From: Xavier Morel Date: Tue, 24 Jul 2012 14:46:07 +0200 Subject: [PATCH 271/349] [IMP] trigger a new search when clicking on the searchview's spyglass Required reifying the purely decorative spyglass (created via :before) into an actual button and moving that button to the right place (after removing all decorations set by default on buttons e.g. shadows &al). apr request. bzr revid: xmo@openerp.com-20120724124607-bc1nsywtth7cn11i --- addons/web/static/src/css/base.css | 55 +++++++++++++---------------- addons/web/static/src/css/base.sass | 23 ++++++------ addons/web/static/src/js/search.js | 6 ++++ addons/web/static/src/xml/base.xml | 2 ++ 4 files changed, 45 insertions(+), 41 deletions(-) diff --git a/addons/web/static/src/css/base.css b/addons/web/static/src/css/base.css index 2e26de30d5f..2be11ff020d 100644 --- a/addons/web/static/src/css/base.css +++ b/addons/web/static/src/css/base.css @@ -1,4 +1,4 @@ -@charset "UTF-8"; +@charset "utf-8"; @font-face { font-family: "mnmliconsRegular"; src: url("/web/static/src/font/mnmliconsv21-webfont.eot") format("eot"); @@ -1408,20 +1408,31 @@ filter: alpha(opacity=50); opacity: 0.5; } +.openerp .oe_searchview .oe_searchview_search { + font-size: 1px; + letter-spacing: -1px; + color: transparent; + -moz-box-shadow: none; + -webkit-box-shadow: none; + box-shadow: none; + -moz-border-radius: 0; + -webkit-border-radius: 0; + border-radius: 0; + position: absolute; + left: 3px; + top: 1px; + padding: 0; + border: none; + background: transparent; +} +.openerp .oe_searchview .oe_searchview_search:before { + font: 21px "mnmliconsRegular"; + content: "r"; + color: #a3a3a3; +} .openerp .oe_searchview .oe_searchview_facets { min-height: 22px; -} -.openerp .oe_searchview .oe_searchview_facets:before { - color: #cccccc; - font-family: "mnmliconsRegular"; - content: "r"; - font-size: 130%; - display: inline; - position: relative; - left: 6px; - top: 2px; - color: #a3a3a3; - padding-right: 4px; + margin-left: 15px; } .openerp .oe_searchview .oe_searchview_facets * { vertical-align: top; @@ -2180,7 +2191,7 @@ height: auto; line-height: 16px; } -.openerp .oe_form_field_one2many .oe_list_buttons.oe_editing .oe_list_save { +.openerp .oe_form_field_one2many .oe_list_buttons.oe_editing .oe_list_save, .openerp .oe_form_field_many2many .oe_list_buttons.oe_editing .oe_list_save { visibility: hidden; } .openerp .oe_form .oe_form_field_many2many > .oe_list .oe_list_pager_single_page { @@ -2266,9 +2277,6 @@ padding: 3px 6px; white-space: pre-line; } -.openerp .oe_list_content > tbody > tr > td.oe_list_field_cell progress { - width: 100%; -} .openerp .oe_list_content > tbody > tr > td > button, .openerp .oe_list_content > tbody > tr > th > button { border: none; background: transparent; @@ -2441,19 +2449,6 @@ .kitten-mode-activated > * { opacity: 0.7; } -.kitten-mode-activated .oe_footer a { - background-image: url(http://www.risacher.com/la-rache/zfiles/la-rache.png); - font-size: 1px; - letter-spacing: -1px; - color: transparent; - display: inline-block; - height: 15px; - width: 80px; - vertical-align: top; -} -.kitten-mode-activated .oe_footer a span { - display: none; -} div.ui-widget-overlay { background: black; diff --git a/addons/web/static/src/css/base.sass b/addons/web/static/src/css/base.sass index c4314923867..aef356d3ab6 100644 --- a/addons/web/static/src/css/base.sass +++ b/addons/web/static/src/css/base.sass @@ -1101,19 +1101,20 @@ $sheet-max-width: 860px border-right: 5px solid transparent @include opacity() + .oe_searchview_search + @include text-to-icon("r", #a3a3a3) + @include box-shadow(none) + @include radius(0) + position: absolute + left: 3px + top: 1px + padding: 0 + border: none + background: transparent + .oe_searchview_facets min-height: 22px - &:before - color: #ccc - font-family: "mnmliconsRegular" - content: "r" - font-size: 130% - display: inline - position: relative - left: 6px - top: 2px - color: #a3a3a3 - padding-right: 4px + margin-left: 15px * vertical-align: top display: inline-block diff --git a/addons/web/static/src/js/search.js b/addons/web/static/src/js/search.js index 8de2562a798..8ffd672c143 100644 --- a/addons/web/static/src/js/search.js +++ b/addons/web/static/src/js/search.js @@ -330,6 +330,12 @@ instance.web.SearchView = instance.web.Widget.extend(/** @lends instance.web.Sea }); } + // Launch a search on clicking the oe_searchview_search button + this.$element.on('click', 'button.oe_searchview_search', function (e) { + e.stopImmediatePropagation(); + self.do_search(); + }); + this.$element.on('keydown', '.oe_searchview_input, .oe_searchview_facet', function (e) { switch(e.which) { diff --git a/addons/web/static/src/xml/base.xml b/addons/web/static/src/xml/base.xml index ed63b5fbfbe..e4aa6797ba6 100644 --- a/addons/web/static/src/xml/base.xml +++ b/addons/web/static/src/xml/base.xml @@ -1220,6 +1220,8 @@
+
Date: Tue, 24 Jul 2012 14:52:57 +0200 Subject: [PATCH 272/349] [FIX] web_shortcut: Pass the action id bzr revid: stw@openerp.com-20120724125257-4ccx6h16nrjyd537 --- addons/web_shortcuts/static/src/js/web_shortcuts.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/addons/web_shortcuts/static/src/js/web_shortcuts.js b/addons/web_shortcuts/static/src/js/web_shortcuts.js index a64675c5211..a2d0fe43596 100644 --- a/addons/web_shortcuts/static/src/js/web_shortcuts.js +++ b/addons/web_shortcuts/static/src/js/web_shortcuts.js @@ -79,9 +79,10 @@ instance.web_shortcuts.Shortcuts = instance.web.Widget.extend({ var self = this, id = $link.data('id'); self.session.active_id = id; + // TODO: Use do_action({menu_id: id, type: 'ir.actions.menu'}) self.rpc('/web/menu/action', {'menu_id': id}, function(ir_menu_data) { if (ir_menu_data.action.length){ - instance.webclient.user_menu.on_action(ir_menu_data.action[0][2]); + instance.webclient.user_menu.on_action({action_id: ir_menu_data.action[0][2].id}); } }); this.$element.find('.oe_systray_shortcuts').trigger('mouseout'); From 4753bf8d74343a56fb2c717de14cb1112a834b14 Mon Sep 17 00:00:00 2001 From: Raphael Collet Date: Tue, 24 Jul 2012 15:23:09 +0200 Subject: [PATCH 273/349] [FIX] sale: add field state in the lines of sale order form, for the web client to process modifiers correctly bzr revid: rco@openerp.com-20120724132309-myn4wcezcqmu40zt --- addons/sale/sale_view.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/addons/sale/sale_view.xml b/addons/sale/sale_view.xml index 3f7f7efa43b..111eee54c28 100644 --- a/addons/sale/sale_view.xml +++ b/addons/sale/sale_view.xml @@ -256,6 +256,7 @@
+ From d6ef80f21ec65edb9586b2d76f3c8a90b9353548 Mon Sep 17 00:00:00 2001 From: niv-openerp Date: Tue, 24 Jul 2012 15:24:14 +0200 Subject: [PATCH 274/349] [IMP] Changed throbber bzr revid: nicolas.vanhoren@openerp.com-20120724132414-27ylo4ls48agwnel --- addons/web/static/src/img/throbber2.gif | Bin 7195 -> 404 bytes addons/web/static/src/js/coresetup.js | 2 ++ 2 files changed, 2 insertions(+) diff --git a/addons/web/static/src/img/throbber2.gif b/addons/web/static/src/img/throbber2.gif index 5d2057ae0e77ab9a76037202ea66827d66b8cd3f..2fd8e0737ed41ba0a01b98f40688c325d5574762 100644 GIT binary patch literal 404 zcmZ?wbhEHb)Mnsj_{hNU|Nnmm28O1lCLpQ!pWDwhB-q(8z|~04fSC~_^iRsUC^fMp zHASI3vm`?yF)OhmCqFSoFEcMKpF!~_3nv#)l@1UyfDB|{GHU7LI6dv=jpolsxuoxf zeLmg#z^pAIa$%Z!?Y&w1mh+_RdR}iorT6Q|=AU*u7AP3`hypFaG{*J_&=>{&#N>^$ zT8^)&`8*@>-uIrA88haeTIl8MRiLwjJ^Sp&wJ%lpHZi7(NaaU-s_i@FclpsQour`S z>#>^%a+m?o#FewMqVMEC;^z|HUiq-HXUUZXD|YcM<39A-C)up?`N?xHe+JE(vBva_ zL67^Xm!D<=OgMMMm%sE9!U5m6(8B5vIg5Ks|uVUfY8 zfQZW=qJxOqK@bHObaaMso9L*6jB_Tg<8qYS=gh6SRkv={J^lILRoz|PZ~fk({T}zkmPf)2AYthl&X ztJQAYxUs&zzP7e@_3G7?m6Zhr1vxo6%af$XK{=VMn!Y?|+^9 zuiFH$QKD9(^tRq{r6K2PcF_L8=3Hw55BUDr-Z35$lLSYn*0HnD1iijO!p-FLYO_y_ zLvakIqFqcfIeZM{uHF)Xv(Rl^7-n&J5X3Vu%Jv}sVuW0|R*gM!McNE7W$en?PoKSeeP>@Hpr7KZ!>@Xouc!m^yCrFyK-JEJ zo0UJbvH>pHSN7* zedai=eLJP=;29;%(Rc-Vxa`&YUs|(7N@n#sFG#Z8DyvYXYKvH_p8IGflEE^Ukne_J`vs0pfEMLQoDlI+jj{<5T8lLmj+>Vy#*a&u zu=Q@*@}Ze=AGSYMgq=J!nl(i0&{m;sli|WtXfjbv?6|?S`-e)fAN1`P_GQoo?ly-d61Z#aE7$JIdPU3+BUG>%!#xF@A?F&LZ4_Be8iMMBpjAu*XgRuhI93L9`?Fi2E=tf!1 zO?^izBO~WS&Uf#Pap#p}jp|W5xsgJCR2(F0S(-t4fqgz9Z)oY6tH+&7R7Yo~OxlVg z=1InRncSW~uYeBOfdpcM*su$1@(G=NpM?&jt13xqJ?d3aXJ-}+EZ8Wz`PKzB4OX1Q z%e@Ib7JoqbGI!p5YX#<#Hh2UPMydUAe)TN?5v!ISM1LHwYC3S9HwaLoD^K*us_}qB zK$^_be~z+uj681_)vCuGB;nq$z-4j|e0`ZZ@K)HY ziq%%^d4uz7rDW^u1^$pgS3!bch=9AN zXh)wRFS}0~aK}OdV$X4#;UknvZcv!iC0hR^R9~+U2Ue(5%gzrAaCty}t~UaGkKI=n zwWzz!u&AFmtcc&LE`)GgfedliSqG*zJGI)60e*#*-f_FqGW9_GC8fG5OXSV<|x&>G=nYRx?snw&^@hA6ZA#q9VUr4N-l!K zY^7y~+B>mk#|;-Loa0T!^3=YKxW_K4hQKzy-{)>{FYR0@TH;HNGhI&uJBAi``N^S4 zO@`-c>bdV&LRw;iHQjoJ$g%foDdNl~PM#(uzG=-Bo)CZ7TxK;oi zb;ltqRrSQ1Mu1xL9rFkjC0 z&=r|h$YA9@PJThJg|!QL`gr4#^j#H{q(_Z?*9fq3&rv%qPP;+A^{QVI5LPw0#*u7^ z-+8uB&~8|4l{C5|?{^g#m@eHON(1@hjrTMUJjN?p$@AfNdVarU0N?Dn9-kmAPkGP? zIJH`$WhWz38ePGQuF~fX{lGoGwkw)4o*&8^yXK7fs@=!`NJ}QQqOY%{Y8m9bsKJfCp(~GEA z`x5_H3z+ryKBy>7PUZJBf@2T97WjXd@~U|Gz|potSV{#X+cM{x^n=|z$5*6ay|m{S z*H+K=$a%7|8Z2j{r;A9SoxZ$eZ>4eWQ=ec^G}UlZF-V9n&LENws^O0+k{xK+hUpBb zxEgJkx79daSbgR881*pdHmEgI(o6Thr{g8EESF^Bj4%mi$*d{P&DBTQy1e7t1-DAO zkAm(U$FT0lpasI~yVRsdCsaUY*`2Lb$A4QqBK+N*(7~?Hi)sr*$bWmo?|-~e#Bhp1 z6+bYT1olYd$%jpbU98|xaSQ$~ll!%p2+CF&FsHn9(+8(M#fs958< zYi}Y}njz0%i+c zqVg+ZnvQ}TZHoEp@Fxv5$(ygM1gpCd4z~K6JlCwT_hFtSFzJO(b-pspRwbEnfJ&L2 z^~KFs+CinmN}<^tO%;UVH$8Utz37#!CROh*K&I9neHD5V=2`owpS06$g;?ZK z)(qX3ZZz!@_n5aVH6)1h^gIQ!Mowy)^|Nwlec20+KwLtVKK8pBV6TESFK%=zyfZ?4Rr`~bz*;Q?3t%qL6Js~R+Zu_ zrM_WDssZB2xcMo4&Md%y1JwTMfc& z!)dyC0hZxjKha8OhvbH4S)wLV6}j46U3;X7d7LCFso0{g6Xh-OJT&p4KgAN{=VOc4 z%mk`8SgH!VPJD`Y)??Bv9q5*8vQG;4KHBY#c-B&)$rpb5aa0euruOw6hm_SMgvtJ- zQN5dW5+==-b|YiX~q7=Rigz4mXr_YC^1HN3(l+X7nK z>I$8fvP?aafwn{HAtC@+ewIK@GI^3dT@bnKTiArRNY4#!K@rRNirPZn6=#wq+Ez)U z7RJW_%l2&x$hOxEyaJ}*)TDeHzsax)ne|P~&z-L0r3&m$i9lb=Q`3M0OpqWue~SP@ z4%G(rAd-CDW7hsJ7V-^gS$g`I65b=nUJH!+`-gy`c1I+i&_0qLv#GWYkr+UhL#9!V zjt|#R4T@>6Y9PPhZ{#e_8mrMszugU{X|UB)NWBm!RpvjM2p&@}CSPbOK+whD15{wU zhhRB195J>dw#NJ5U77J5R@3EIs!n9fQ*w<|zu2fTe zB8*!7f<}1aB36bP5`{*7Y3*a7L%lwZ5;^nkK*Hu!nTZF@GttnZ6aOeSQ$60(q}$(D zYKS!xv(TfC{+ySCh%-~zO*^7D=S3!U-WeSRJ$Z zQ%e>)ILY+vNCVib15ooTiw;#N2j>3JmN%oC#6zVWoQ{~{+LJbSmB597-$TTrK}S}w z8sZ20p=qBZ>)iqdc+E6oWjr9ZmIm_A^WsWe6lkDsEPt@vvJVM?QYOGqHGsM&QE1|= zX5@P1Uhhnbo8(%As_11x+}i1xvJe!DS4>|ucR`5;EIA=XN6kOo(t=7l;?uuji$3k%=`6R_tXFw#&lOW*s4hhO%5 z`1J(n%8|Erce9ANQ~);98c>;p%SzT!N3(MGeYakLA%B9AS2f~Te+4+U8*4JqHj(-Q`?Px?vNDqqe`l4_sdqC(E!{=HrF{kK6u zFY9ikLw@YPMSYyHC}vN$)@3zLU5JZP{k{MEQ%IXC*!M z;y|)%3w{mz1A41tU3^*v+u-*+MCtv7kW7pO{z}e_C!0Q|6Y(?dz`n!Onn@oneU>KR zYO>+ZiF9>lDUceVzJ{M0>Q&mc+S^xAJv+m3$Mexc)Gnv1Kzmha{wD& zxg*5(DXf%UnP8s-2mVRDE#`F0_*!m%&rDm=7;=90EpkQUJ~FLbC%db7+5A=jT6Hn~ z!En2x$Vlzj4#Z#Wc``mu^fckxbjT}dY~8QH2)9sI_;v0xb}%_)R;Rn_yf+5y{s1T( z1=Nk(lT-dGch2NDPP=7RANIMMOmWhq>wh#*rriKw!)2rD7hYQ0NE7#__jY zvXo0D7rIZby%2gBWCQY77Get?2ILloYT-@X6qvOh2KXijfE5*DI1aPn>{=LF0YD_C z-Mgx02?o~HELf13s7-86uU^9C=C`)CUEIK0cqV=ctCI_Z=TEk^V|@Nbv?pdG@C|qQ zz_p=^htS8+=DRa@v(V!pkTp>Eux%0a2A}h6#>+k~J1MFE+Qa7`g{nX7cR`=-bG|<7e=d*#V>^12Q_tmJhPsO! zaNj&4y|X3L-cKX@L_r&u@h5pCAJ9^5R({1^BDK6J2e%3y+VE-IPCz_&HVNE+bHNH{ z%bL~l?iW`7ED;WkeX}Ch5iDGw5hRch+r?2u690@&PV zc$1x{Sb^IxWrSt!FJWm5c<7(V0m4XskH_Ee})C+M0>eyXo?WMJOP?XhSg0C_Z=h$pNZ6Bqc zpwin#4S1J4glRR?xRoE1~t}O@mlx(3<@%JqafmUe!{MHi1eVwj7uFD`<-*CG(-3E zWzQ3cV|;jTmZ^*YkgSoO9YFMyc=GVd`l@>CYAqf*9sP(4^zWRzr*A@ByIDMNR7aMuVhnVyrp+b(@XS?qU{7 zhctt{%+kSlBz?-~WGyx_=^brra;&9lqqV=694?cqcLTztLA{OX%nJSTp1tw61wyq7 zVv$?#yMf7pgZEI8r$CE|B1!#Jb|^td4SdPhYq#yw64tKEJbNGs;G-)jKJyWH9Q)yj zL(Lba*%U&p4>_o<*f@HN=jt;o$EOzU#b6`b@e}E^yWDCdRz*&DlH}5AnrN<^Qm5kKXBzLu>~m?2g-lg~ZkEk1q8q1S2QWZU zL6bphFeJSgz)KX3J}PjdL<((P7xyL}n|7l0fGG4e`8ATh__G}ihDg*UZmNsjbvN1E zE2h8IR{72w<2Kt*PImgk#jx5`bs2cH13L}WnhX2}VhOQ*YnSDmz9RAZE0&=U7b;P2 zTK?N3*0f=AK%glc@U=vA(kXdGQY5_2fGo)0J+bRCvw@?r2;(%<#8(mNUiB~9l0cL8 zQ8!N9=Y@Ev5nx~V*8J6G2k)}?J)+$-VpDS0aevz-R)wbg3A>yXZ2(P_^5Rb-J(l*? zEn4C;&7{OC^q|Elt9Tt^Geo0G6(rWt$TojF_L`7Bj`x+2nEcWfg_MfULP1tP&1!Ko zE9ruRZcYcVlv2nfSZSF*5am+zJ@K}2>xPjJhY+}=K5hfKYysY9xmV8Tcil$DsBWg) zo&_%5nH4P1Wgt3$8uvOTavu8{S~%&NpzsZMm{2YXG)9^i5|(Bv3bjyO6qy_j@B*lf zg~JH{WehS4+%{n=Nv7Vr2Ji2vR63K8c>{sk4Q=PdYbJ6YxYUon%H}hch$)*O2L(}$ zH>Jj|WGf1CK;>}n+Qykmb>mp33WcgcCYZqpFv2SKyZTSkfI3U&jf5Kf=#@EM;Zph? zA%*TccCU_L%UKE;D5eQ?`a?3m&ibZV4>3(BsWmf^1w$^kaF#^RpSbpipKK2tnO;PF zBa_0WJQgy(Le6@Awg~(1a#PYIj(P>&+--5%*HfcsM+5Nd4gzz}oXJa)HDQ?tz{2s7 zZ`4Uv5UF02-TrV-g`=5MwhonjAmiN6YR&V9p)q$M64(OXyOCxVMiO6@K)}x8OA+i) zEz6qQ@ox8lkjFFnCPN>~drN>lE*+y}-ll{J_mLvd7N3vU8pJK{gwppVK%Y#9?Mw+@ zP(Luh6Bw?WW&+X@oCag9n!l#7!9Jlz*qq^q(u$4e2|TF#qdIMPkE{3wy#%|;e(2PF z>c_BRpQ-CjxxBcZU%r&gS)4r|KbmAIYHDS<$sX;y_F;eL%#%Lif}rEi)2rX!DmCR48x)$C{ zTYvVV#I}J#K{&m8o~F~Rdk+3_BVC3SjW#nMCp6#n?ojAG{6Ud%Ajx(Yr)w-Ii z)c{XT^1}M)^*emJF(OJ0C2o9q+v9p6K4B(UT+V{c@zbJfXJa>y96aKqZr`82q41E? zX*guHJl4^Wnc|)bW&KVgZV^-tIwX}df2c;es_F9RIT6#tnV(iA<9!w{$$-Lwl4q~T zS(+TTA}?oA`l@94@+HesbC;}GzA8B)JvC=l^1sJG-~Vj*-(#TPe>VK@F%SeM{}=NC B5|jV{ diff --git a/addons/web/static/src/js/coresetup.js b/addons/web/static/src/js/coresetup.js index a5a62b9bcc1..801ce50bc2d 100644 --- a/addons/web/static/src/js/coresetup.js +++ b/addons/web/static/src/js/coresetup.js @@ -551,6 +551,8 @@ $.async_when = function() { if ($.blockUI) { $.blockUI.defaults.baseZ = 1100; $.blockUI.defaults.message = ''; + $.blockUI.defaults.css.border = '0'; + $.blockUI.defaults.css["background-color"] = ''; } /** Setup default session */ From 41617e11002a889b7bfa67203d6ae3d52a2c0ea4 Mon Sep 17 00:00:00 2001 From: Stephane Wirtel Date: Tue, 24 Jul 2012 15:38:58 +0200 Subject: [PATCH 275/349] [FIX] sale: Hide the state field on the sale order lines bzr revid: stw@openerp.com-20120724133858-a38ovfjt6gklbz3t --- addons/sale/sale_view.xml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/addons/sale/sale_view.xml b/addons/sale/sale_view.xml index 3f7f7efa43b..9d368563e3c 100644 --- a/addons/sale/sale_view.xml +++ b/addons/sale/sale_view.xml @@ -204,6 +204,7 @@ + + From fceb94cb8ac1af2fdb6f88e6b86632552075baf1 Mon Sep 17 00:00:00 2001 From: Minh Tran Date: Tue, 24 Jul 2012 15:46:52 +0200 Subject: [PATCH 276/349] Changed style of About dialog box to match login page style bzr revid: mit@openerp.com-20120724134652-t783h7glntytr3kv --- addons/web/static/src/css/base.css | 41 +++++++++++++++++++++++++- addons/web/static/src/css/base.sass | 25 +++++++++++++++- addons/web/static/src/img/pattern.png | Bin 98 -> 0 bytes addons/web/static/src/js/chrome.js | 2 +- addons/web/static/src/xml/base.xml | 27 ++++++++--------- 5 files changed, 78 insertions(+), 17 deletions(-) delete mode 100644 addons/web/static/src/img/pattern.png diff --git a/addons/web/static/src/css/base.css b/addons/web/static/src/css/base.css index eda3a996d23..3b2fb526144 100644 --- a/addons/web/static/src/css/base.css +++ b/addons/web/static/src/css/base.css @@ -267,6 +267,45 @@ color: black; text-decoration: none; } +.openerp.ui-dialog .oe_about { + background-color: white; + background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAYAAAAGCAYAAADgzO9IAAAAKUlEQVQIHWO8e/fufwYsgAUkJigoiCIF5DMyoYggcUiXgNnBiGQKmAkARpcEQeriln4AAAAASUVORK5CYII=); + -moz-border-radius: 0 0 2px 2px; + -webkit-border-radius: 0 0 2px 2px; + border-radius: 0 0 2px 2px; +} +.openerp.ui-dialog .oe_about a { + color: #8a89ba; +} +.openerp.ui-dialog .oe_about a:hover { + text-decoration: underline; +} +.openerp.ui-dialog .oe_about .oe_logo { + margin-left: -6px; +} +.openerp.ui-dialog .oe_about .oe_bottom { + position: absolute; + top: 50%; + left: 0; + right: 0; + bottom: 0; + text-shadow: 0 1px 1px #999999; + background-color: #b41616; + background-image: -webkit-gradient(linear, left top, left bottom, from(#b41616), to(#600606)); + background-image: -webkit-linear-gradient(top, #b41616, #600606); + background-image: -moz-linear-gradient(top, #b41616, #600606); + background-image: -ms-linear-gradient(top, #b41616, #600606); + background-image: -o-linear-gradient(top, #b41616, #600606); + background-image: linear-gradient(to bottom, #b41616, #600606); + color: #eeeeee; + padding: 0 16px; + -moz-border-radius: 0 0 2px 2px; + -webkit-border-radius: 0 0 2px 2px; + border-radius: 0 0 2px 2px; +} +.openerp.ui-dialog .oe_about .oe_bottom a { + color: #eeeeee; +} .openerp.ui-dialog.oe_act_window .ui-dialog-content { padding: 0px; } @@ -711,7 +750,7 @@ z-index: 1050; } .openerp .oe_login { - background: url("/web/static/src/img/pattern.png") repeat; + background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAYAAAAGCAYAAADgzO9IAAAAKUlEQVQIHWO8e/fufwYsgAUkJigoiCIF5DMyoYggcUiXgNnBiGQKmAkARpcEQeriln4AAAAASUVORK5CYII=); text-align: center; font-size: 14px; height: 100%; diff --git a/addons/web/static/src/css/base.sass b/addons/web/static/src/css/base.sass index dbd3d30f453..de0ab08391b 100644 --- a/addons/web/static/src/css/base.sass +++ b/addons/web/static/src/css/base.sass @@ -256,6 +256,29 @@ $sheet-max-width: 860px &:hover color: black text-decoration: none + .oe_about + background-color: white + background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAYAAAAGCAYAAADgzO9IAAAAKUlEQVQIHWO8e/fufwYsgAUkJigoiCIF5DMyoYggcUiXgNnBiGQKmAkARpcEQeriln4AAAAASUVORK5CYII=) + @include radius(0 0 2px 2px) + a + color: #8A89BA + &:hover + text-decoration: underline + .oe_logo + margin-left: -6px + .oe_bottom + position: absolute + top: 50% + left: 0 + right: 0 + bottom: 0 + text-shadow: 0 1px 1px #999999 + @include vertical-gradient(#b41616, #600606) + color: #eee + padding: 0 16px + @include radius(0 0 2px 2px) + a + color: #eee &.ui-dialog.oe_act_window .ui-dialog-content @@ -567,7 +590,7 @@ $sheet-max-width: 860px // }}} // Login {{{ .oe_login - background: url("/web/static/src/img/pattern.png") repeat + background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAYAAAAGCAYAAADgzO9IAAAAKUlEQVQIHWO8e/fufwYsgAUkJigoiCIF5DMyoYggcUiXgNnBiGQKmAkARpcEQeriln4AAAAASUVORK5CYII=) text-align: center font-size: 14px height: 100% diff --git a/addons/web/static/src/img/pattern.png b/addons/web/static/src/img/pattern.png deleted file mode 100644 index 7e3a2b3783419e6e5d6caf570adad0ff72359ab3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 98 zcmeAS@N?(olHy`uVBq!ia0vp^tRT$61|)m))t&+=O-~oc5DwYonlCRd*0Y%$V0!fV v!-oT{tgNh(GauNfu!T8pD4QUr(#pdyMTNya*NmeZsENVT)z4*}Q$iB}iHRDp diff --git a/addons/web/static/src/js/chrome.js b/addons/web/static/src/js/chrome.js index 2ab4b61d9c0..28dc9020c4e 100644 --- a/addons/web/static/src/js/chrome.js +++ b/addons/web/static/src/js/chrome.js @@ -851,7 +851,7 @@ instance.web.UserMenu = instance.web.Widget.extend({ window.location.href, 'debug'); }); instance.web.dialog($help, {autoOpen: true, - modal: true, width: 960, title: _t("About")}); + modal: true, width: 580, height: 290, resizable: false, title: _t("About")}); }); }, }); diff --git a/addons/web/static/src/xml/base.xml b/addons/web/static/src/xml/base.xml index 1bbffe3e2a7..da19e6da0a3 100644 --- a/addons/web/static/src/xml/base.xml +++ b/addons/web/static/src/xml/base.xml @@ -329,21 +329,20 @@ -
- Activate the developer mode -

OpenERP

-

Version

-

- Copyright © 2004-TODAY OpenERP SA. All Rights Reserved.
- OpenERP is a trademark of the OpenERP SA Company. -

-

- Licenced under the terms of GNU Affero General Public License -

-

- For more information visit OpenERP.com -

+ +
+ Activate the developer mode + +

Version

+ +
+

Copyright © 2004-TODAY OpenERP SA. All Rights Reserved.
+ OpenERP is a trademark of the OpenERP SA Company.

+

Licenced under the terms of GNU Affero General Public License

+

For more information visit OpenERP.com

+
+
From 35bb49701c1479be1129fd7b2969ede90b7978b9 Mon Sep 17 00:00:00 2001 From: Xavier Morel Date: Tue, 24 Jul 2012 15:56:55 +0200 Subject: [PATCH 277/349] [IMP] keep focus in the same column when navigating to the previous/next record with up/down arrows bzr revid: xmo@openerp.com-20120724135655-hjk2l0mxvncker4q --- .../web/static/src/js/view_list_editable.js | 47 ++++++++++++------- doc/form-notes.rst | 6 +++ 2 files changed, 36 insertions(+), 17 deletions(-) diff --git a/addons/web/static/src/js/view_list_editable.js b/addons/web/static/src/js/view_list_editable.js index 56df125c98b..707e0d196f1 100644 --- a/addons/web/static/src/js/view_list_editable.js +++ b/addons/web/static/src/js/view_list_editable.js @@ -202,6 +202,8 @@ openerp.web.list_editable = function (instance) { return; } + // FIXME: need better way to get the field back from bubbling (delegated) DOM events somehow + field.$element.attr('data-fieldname', field_name); self.fields_for_resize.push({field: field, cell: cell}); }, options).pipe(function () { $recordRow.addClass('oe_edition'); @@ -399,18 +401,20 @@ openerp.web.list_editable = function (instance) { * * @private * @param {String} [next_record='succ'] method to call on the records collection to get the next record to edit + * @param {Object} [options] + * @param {String} [options.focus_field] * @return {*} */ - _next: function (next_record) { + _next: function (next_record, options) { next_record = next_record || 'succ'; var self = this; return this.save_edition().pipe(function (saveInfo) { if (saveInfo.created) { return self.start_edition(); } - return self.start_edition( - self.records[next_record]( - saveInfo.record, {wraparound: true})); + var record = self.records[next_record]( + saveInfo.record, {wraparound: true}); + return self.start_edition(record, options); }); }, keyup_ENTER: function () { @@ -440,25 +444,34 @@ openerp.web.list_editable = function (instance) { } return selection.start; }, - keydown_UP: function (e) { + /** + * @param DOMEvent event + * @param {String} record_direction direction to move into to get the next record (pred | succ) + * @param {Function} is_valid_move whether the edition should be moved to the next record + * @private + */ + _key_move_record: function (event, record_direction, is_valid_move) { if (!this.editor.is_editing('edit')) { return $.when(); } // FIXME: assumes editable widgets are input-type elements - var index = this._text_cursor(e.target); + var index = this._text_cursor(event.target); // If selecting or not at the start of the input - if (index === null || index !== 0) { return $.when(); } + if (!is_valid_move(event.target, index)) { return $.when(); } - e.preventDefault(); - return this._next('pred'); + event.preventDefault(); + var source_field = $(event.target).closest('[data-fieldname]') + .attr('data-fieldname'); + return this._next(record_direction, {focus_field: source_field}); + + }, + keydown_UP: function (e) { + return this._key_move_record(e, 'pred', function (el, index) { + return index === 0; + }); }, keydown_DOWN: function (e) { - if (!this.editor.is_editing('edit')) { return $.when(); } - // FIXME: assumes editable widgets are input-type elements - var index = this._text_cursor(e.target); - // If selecting or not at the end of the input - if (index === null || index !== e.target.value.length) { return $.when(); } - - e.preventDefault(); - return this._next(); + return this._key_move_record(e, 'succ', function (el, index) { + return index === el.value.length; + }); }, keydown_TAB: function (e) { var form = this.editor.form; diff --git a/doc/form-notes.rst b/doc/form-notes.rst index fc450a336e1..98d4a4de67e 100644 --- a/doc/form-notes.rst +++ b/doc/form-notes.rst @@ -47,3 +47,9 @@ Undocumented stuff * What is the difference between ``readonly`` and ``effective_readonly``? + +* No facilities for DOM events handling/delegations e.g. handling + keyup/keydown/keypress from a form fields into the form's user. + + * Also no way to reverse from a DOM node (e.g. DOMEvent#target) back to a + form view field easily From f0fa9cd2e31142bc6ed7cb59b3dbc466274c50a8 Mon Sep 17 00:00:00 2001 From: Raphael Collet Date: Tue, 24 Jul 2012 15:58:14 +0200 Subject: [PATCH 278/349] [IMP] sale: turn the sale order lines into an editable list bzr revid: rco@openerp.com-20120724135814-xubsoe5c7o9g7yp8 --- addons/sale/sale_view.xml | 29 +++++++++++++++++++++-------- 1 file changed, 21 insertions(+), 8 deletions(-) diff --git a/addons/sale/sale_view.xml b/addons/sale/sale_view.xml index cb610050cef..31fd7078c32 100644 --- a/addons/sale/sale_view.xml +++ b/addons/sale/sale_view.xml @@ -190,7 +190,6 @@
@@ -247,13 +246,27 @@
- - + + + + + + + + + - - - - + + + + @@ -444,7 +457,7 @@ - + From b98723a1fed138068b1b1db936ab0f0ca704bb93 Mon Sep 17 00:00:00 2001 From: niv-openerp Date: Tue, 24 Jul 2012 16:12:20 +0200 Subject: [PATCH 279/349] [IMP] improved throbber bzr revid: nicolas.vanhoren@openerp.com-20120724141220-1u0odsgsxzjtc5xn --- addons/web/__openerp__.py | 1 + addons/web/static/src/img/throbber2.gif | Bin 404 -> 0 bytes addons/web/static/src/js/chrome.js | 14 +++++------ addons/web/static/src/js/coresetup.js | 32 +++++++++++++++++++++++- addons/web/static/src/js/data_export.js | 4 +-- addons/web/static/src/js/view_form.js | 4 +-- addons/web/static/src/js/views.js | 8 +++--- 7 files changed, 47 insertions(+), 16 deletions(-) delete mode 100644 addons/web/static/src/img/throbber2.gif diff --git a/addons/web/__openerp__.py b/addons/web/__openerp__.py index 9e8e258dedc..4051e607e21 100644 --- a/addons/web/__openerp__.py +++ b/addons/web/__openerp__.py @@ -20,6 +20,7 @@ "static/lib/jquery.form/jquery.form.js", "static/lib/jquery.validate/jquery.validate.js", "static/lib/jquery.ba-bbq/jquery.ba-bbq.js", + "static/lib/spinjs/spin.js", "static/lib/jquery.blockUI/jquery.blockUI.js", "static/lib/jquery.ui/js/jquery-ui-1.8.17.custom.min.js", "static/lib/jquery.ui.timepicker/js/jquery-ui-timepicker-addon.js", diff --git a/addons/web/static/src/img/throbber2.gif b/addons/web/static/src/img/throbber2.gif deleted file mode 100644 index 2fd8e0737ed41ba0a01b98f40688c325d5574762..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 404 zcmZ?wbhEHb)Mnsj_{hNU|Nnmm28O1lCLpQ!pWDwhB-q(8z|~04fSC~_^iRsUC^fMp zHASI3vm`?yF)OhmCqFSoFEcMKpF!~_3nv#)l@1UyfDB|{GHU7LI6dv=jpolsxuoxf zeLmg#z^pAIa$%Z!?Y&w1mh+_RdR}iorT6Q|=AU*u7AP3`hypFaG{*J_&=>{&#N>^$ zT8^)&`8*@>-uIrA88haeTIl8MRiLwjJ^Sp&wJ%lpHZi7(NaaU-s_i@FclpsQour`S z>#>^%a+m?o#FewMqVMEC;^z|HUiq-HXUUZXD|YcM<39A-C)up?`N?xHe+JE(vBva_ zL67^Xm!D<=O Date: Tue, 24 Jul 2012 16:37:28 +0200 Subject: [PATCH 280/349] [IMP] account: make invoice lines editable in invoice forms bzr revid: rco@openerp.com-20120724143728-3tozjdp6i312mjrn --- addons/account/account_invoice_view.xml | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/addons/account/account_invoice_view.xml b/addons/account/account_invoice_view.xml index 211a40f030f..f1fd022fac7 100644 --- a/addons/account/account_invoice_view.xml +++ b/addons/account/account_invoice_view.xml @@ -196,7 +196,7 @@ - + @@ -345,7 +345,24 @@ - + + + + + + + + + + + + + +
From 3a048c74142c6decb2989491a4a37fda818b7421 Mon Sep 17 00:00:00 2001 From: Raphael Collet Date: Tue, 24 Jul 2012 16:38:15 +0200 Subject: [PATCH 281/349] [IMP] base_setup: in partner kanban view, use name_get to display partner categories bzr revid: rco@openerp.com-20120724143815-s0zi90n8m8ptnm0v --- addons/base_setup/static/src/js/base_setup.js | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/addons/base_setup/static/src/js/base_setup.js b/addons/base_setup/static/src/js/base_setup.js index b3a7d7cdf14..4f900a3d69b 100644 --- a/addons/base_setup/static/src/js/base_setup.js +++ b/addons/base_setup/static/src/js/base_setup.js @@ -10,11 +10,12 @@ openerp.base_setup = function(openerp) { this.$element.find('.oe_kanban_partner_categories span').each(function() { category_ids.push($(this).data('category_id')); }); - var dataset = new openerp.web.DataSetSearch(this, 'res.partner.category', - self.session.context, [['id', 'in', _.uniq(category_ids)]]); - dataset.read_slice(['id', 'name']).then(function(result) { - _.each(result, function(v, k) { - self.$element.find('.oe_kanban_partner_categories span[data-category_id=' + v.id + ']').html(v.name); + var dataset = new openerp.web.DataSetSearch(this, 'res.partner.category', self.session.context); + dataset.name_get(_.uniq(category_ids)).then(function(result) { + _.each(result, function(value) { + self.$element + .find('.oe_kanban_partner_categories span[data-category_id=' + value[0] + ']') + .html(value[1]); }); }); } From df05d2cd20f053a69a4b9ffc95bcb4e61cfe5ea5 Mon Sep 17 00:00:00 2001 From: Xavier Morel Date: Tue, 24 Jul 2012 17:01:12 +0200 Subject: [PATCH 282/349] [ADD] focus previous/next field when using the left/right arrow while at the start/end of a field bzr revid: xmo@openerp.com-20120724150112-r8liahdyaxmx49o8 --- .../web/static/src/js/view_list_editable.js | 46 +++++++++++++++++++ 1 file changed, 46 insertions(+) diff --git a/addons/web/static/src/js/view_list_editable.js b/addons/web/static/src/js/view_list_editable.js index 707e0d196f1..f2ce08f12ca 100644 --- a/addons/web/static/src/js/view_list_editable.js +++ b/addons/web/static/src/js/view_list_editable.js @@ -473,6 +473,52 @@ openerp.web.list_editable = function (instance) { return index === el.value.length; }); }, + + keydown_LEFT: function (e) { + // If the cursor is at the beginning of the field + var source_field = $(e.target).closest('[data-fieldname]') + .attr('data-fieldname'); + var index = this._text_cursor(e.target); + if (index !== 0) { return $.when(); } + + var fields_order = this.editor.form.fields_order; + var field_index = _(fields_order).indexOf(source_field); + + // Look for the closest visible form field to the left + var fields = this.editor.form.fields; + var field; + do { + if (--field_index < 0) { return $.when(); } + + field = fields[fields_order[field_index]]; + } while (!field.$element.is(':visible')); + + // and focus it + field.focus(); + return $.when(); + }, + keydown_RIGHT: function (e) { + // same as above, but with cursor at the end of the field and + // looking for new fields at the right + var source_field = $(e.target).closest('[data-fieldname]') + .attr('data-fieldname'); + var index = this._text_cursor(e.target); + if (index !== e.target.value.length) { return $.when(); } + + var fields_order = this.editor.form.fields_order; + var field_index = _(fields_order).indexOf(source_field); + + var fields = this.editor.form.fields; + var field; + do { + if (++field_index >= fields_order.length) { return $.when(); } + + field = fields[fields_order[field_index]]; + } while (!field.$element.is(':visible')); + + field.focus(); + return $.when(); + }, keydown_TAB: function (e) { var form = this.editor.form; var last_field = _(form.fields_order).chain() From da361d10427df704a9a9fa8b365627aae75fc3b7 Mon Sep 17 00:00:00 2001 From: Olivier Dony Date: Tue, 24 Jul 2012 17:34:05 +0200 Subject: [PATCH 283/349] [IMP] crm: crm.case.stage should be readable by all, to allow new statusbar widgets to work for stages bzr revid: odo@openerp.com-20120724153405-8owoyo60bjgnq60r --- addons/crm/security/ir.model.access.csv | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/crm/security/ir.model.access.csv b/addons/crm/security/ir.model.access.csv index 91e5f1c1769..fd11a8e64c4 100644 --- a/addons/crm/security/ir.model.access.csv +++ b/addons/crm/security/ir.model.access.csv @@ -16,7 +16,7 @@ access_crm_phonecall,crm.phonecall,model_crm_phonecall,base.group_sale_salesman, access_crm_phonecall_all,crm.phonecall.all,model_crm_phonecall,base.group_user,1,0,0,0 access_crm_case_section_user,crm.case.section.user,model_crm_case_section,base.group_sale_salesman,1,1,1,0 access_crm_case_section_manager,crm.case.section.manager,model_crm_case_section,base.group_sale_manager,1,1,1,1 -access_crm_case_stage,crm.case.stage,model_crm_case_stage,base.group_user,1,0,0,0 +access_crm_case_stage,crm.case.stage,model_crm_case_stage,,1,0,0,0 access_crm_case_stage_manager,crm.case.stage,model_crm_case_stage,base.group_sale_manager,1,1,1,1 access_crm_case_resource_type_user,crm_case_resource_type user,model_crm_case_resource_type,base.group_sale_salesman,1,1,1,0 access_crm_case_resource_type_manager,crm_case_resource_type manager,model_crm_case_resource_type,base.group_sale_manager,1,1,1,1 From 38cb3de5183654661d92db6134fa6423f9441261 Mon Sep 17 00:00:00 2001 From: Xavier Morel Date: Tue, 24 Jul 2012 19:05:50 +0200 Subject: [PATCH 284/349] [FIX] attempt to make editability handling more logical and simpler to manage. Also less buggy, with a bit o' luck bzr revid: xmo@openerp.com-20120724170550-150vimuk6bvzh8y8 --- addons/web/static/src/js/view_form.js | 13 +++-- addons/web/static/src/js/view_list.js | 3 -- .../web/static/src/js/view_list_editable.js | 44 +++++++++-------- doc/list-view.rst | 49 ++++++++++++------- 4 files changed, 63 insertions(+), 46 deletions(-) diff --git a/addons/web/static/src/js/view_form.js b/addons/web/static/src/js/view_form.js index 7a0482a3034..835527b3135 100644 --- a/addons/web/static/src/js/view_form.js +++ b/addons/web/static/src/js/view_form.js @@ -3027,8 +3027,11 @@ instance.web.form.FieldOne2Many = instance.web.form.AbstractField.extend({ this.viewmanager.on_controller_inited.add_last(function(view_type, controller) { controller.o2m = self; if (view_type == "list") { - if (self.get("effective_readonly")) - controller.set_editable(false); + if (self.get("effective_readonly")) { + controller.on('edit:before', self, function (e) { + e.cancel = true; + }); + } } else if (view_type === "form") { if (self.get("effective_readonly")) { $(".oe_form_buttons", controller.$element).children().remove(); @@ -3301,7 +3304,7 @@ instance.web.form.One2ManyListView = instance.web.ListView.extend({ .value(); }, do_add_record: function () { - if (this.options.editable) { + if (this.editable()) { this._super.apply(this, arguments); } else { var self = this; @@ -4108,10 +4111,12 @@ instance.web.form.SelectCreatePopup = instance.web.form.AbstractFormPopup.extend self.dataset, false, _.extend({'deletable': false, 'selectable': !self.options.disable_multiple_selection, - 'read_only': true, 'import_enabled': false, '$buttons': self.$buttonpane, }, self.options.list_view_options || {})); + self.view_list.on('edit:before', self, function (e) { + e.cancel = true; + }); self.view_list.popup = self; self.view_list.appendTo($(".oe_popup_list", self.$element)).pipe(function() { self.view_list.do_show(); diff --git a/addons/web/static/src/js/view_list.js b/addons/web/static/src/js/view_list.js index f68f1354099..53a8c0126b2 100644 --- a/addons/web/static/src/js/view_list.js +++ b/addons/web/static/src/js/view_list.js @@ -21,9 +21,6 @@ instance.web.ListView = instance.web.View.extend( /** @lends instance.web.ListVi // whether the view rows can be reordered (via vertical drag & drop) 'reorderable': true, 'action_buttons': true, - // if true, the view can't be editable, ignoring the view's and the context's - // instructions - 'read_only': false, // if true, the 'Import', 'Export', etc... buttons will be shown 'import_enabled': true, }, diff --git a/addons/web/static/src/js/view_list_editable.js b/addons/web/static/src/js/view_list_editable.js index f2ce08f12ca..697715f2f77 100644 --- a/addons/web/static/src/js/view_list_editable.js +++ b/addons/web/static/src/js/view_list_editable.js @@ -12,6 +12,8 @@ openerp.web.list_editable = function (instance) { var self = this; this._super.apply(this, arguments); + this._force_editability = null; + this._context_editable = false; this.editor = this.make_editor(); // Stores records of {field, cell}, allows for re-rendering fields // depending on cell state during and after resize events @@ -37,6 +39,11 @@ openerp.web.list_editable = function (instance) { } }); + this.on('edit:before', this, function (event) { + if (!self.editable() || self.editor.is_editing()) { + event.cancel = true; + } + }); this.on('edit:after', this, function () { self.$element.add(self.$buttons).addClass('oe_editing'); }); @@ -62,26 +69,18 @@ openerp.web.list_editable = function (instance) { do_edit: function (index, id, dataset) { _.extend(this.dataset, dataset); }, - /** - * Sets editability status for the list, based on defaults, view - * architecture and the provided flag, if any. - * - * @param {Boolean} [force] forces the list to editability. Sets new row edition status to "bottom". - */ - set_editable: function (force) { - // TODO: fix handling of editability status to be simpler & clearer & more coherent - // If ``force``, set editability to bottom - // otherwise rely on view default - // view' @editable is handled separately as we have not yet - // fetched and processed the view at this point. - this.options.editable = ( - ! this.options.read_only && ((force && "bottom") || this.defaults.editable)); + editable: function () { + if (this.fields_view.arch.attrs.editable || this._context_editable) { + return true; + } + + return this.options.editable; }, /** * Replace do_search to handle editability process */ do_search: function(domain, context, group_by) { - this.set_editable(context['set_editable']); + this._context_editable = !!context.set_editable; this._super.apply(this, arguments); }, /** @@ -89,7 +88,7 @@ openerp.web.list_editable = function (instance) { * as an editable row at the top or bottom of the list) */ do_add_record: function () { - if (this.options.editable) { + if (this.editable()) { this.$element.find('table:first').show(); this.$element.find('.oe_view_nocontent').remove(); this.start_edition(); @@ -103,9 +102,8 @@ openerp.web.list_editable = function (instance) { this.editor.destroy(); } // tree/@editable takes priority on everything else if present. - this.options.editable = ! this.options.read_only && (data.arch.attrs.editable || this.options.editable); var result = this._super(data, grouped); - if (this.options.editable) { + if (this.editable()) { // FIXME: any hook available to ensure this is only done once? this.$buttons .off('click', '.oe_list_save') @@ -210,6 +208,12 @@ openerp.web.list_editable = function (instance) { self.resize_fields(); return record.attributes; }); + }).fail(function () { + // if the start_edition event is cancelled and it was a + // creation, remove the newly-created empty record + if (!record.get('id')) { + self.records.remove(record); + } }); }); }, @@ -379,7 +383,7 @@ openerp.web.list_editable = function (instance) { return this.reload_record(record); }, prepends_on_create: function () { - return this.options.editable === 'top'; + return this.editable() === 'top'; }, setup_events: function () { var self = this; @@ -701,7 +705,7 @@ openerp.web.list_editable = function (instance) { instance.web.ListView.List.include(/** @lends instance.web.ListView.List# */{ row_clicked: function (event) { - if (!this.options.editable) { + if (!this.view.editable()) { return this._super.apply(this, arguments); } var record_id = $(event.currentTarget).data('id'); diff --git a/doc/list-view.rst b/doc/list-view.rst index 0d67c27f963..83925d82f46 100644 --- a/doc/list-view.rst +++ b/doc/list-view.rst @@ -87,34 +87,37 @@ List view edition is an extension to the base listview providing the capability of inline record edition by delegating to an embedded form view. -.. todo:: +Editability status +++++++++++++++++++ - cleanup options and settings for editability configuration. Right - now there are: +The editability status of a list view can be queried through the +:js:func:`~openerp.web.ListView.editable` method, will return a falsy +value if the listview is not currently editable. - ``defaults.editable`` +The editability status is based on three flags: - ``null``, ``"top"`` or ``"bottom"``, generally broken and - useless +``tree/@editable`` - ``context.set_editable`` + If present, can be either ``"top"`` or ``"bottom"``. Either will + make the list view editable, with new records being respectively + created at the top or at the bottom of the view. - forces ``options.editable`` to ``"bottom"`` +``context.set_editable`` - ``view.arch.attrs.editable`` + Boolean flag extracted from a search context (during the + :js:func:`~openerp.web.ListView.do_search`` handler), ``true`` + will make the view editable (from the top), ``false`` or the + absence of the flag is a noop. - same as ``defaults.editable``, but applied separately (after - reloading the view), if absent delegates to - ``options.editable`` which may have been set previously. +``defaults.editable`` - ``options.read_only`` + Like ``tree/@editable``, one of absent (``null``)), ``"top"`` or + ``"bottom"``, fallback for the list view if none of the previous + two flags are set. - force options.editable to false, or something? - - .. note:: can probably be replaced by cancelling ``edit:before`` - - and :js:func:`~openerp.web.ListView.set_editable` which - ultimately behaves weird-as-fuck-ly. +These three flags can only *make* a listview editable, they can *not* +override a previously set flag. To do that, a listview user should +instead cancel :ref:`the edit:before event `. The editable list view module adds a number of methods to the list view, on top of implementing the :js:class:`EditorDelegate` protocol: @@ -219,6 +222,14 @@ view provides a number of dedicated events to its lifecycle. abort its current behavior as soon as possible, and rollback any state modification. + Generally speaking, an event should only be cancelled (by + setting the ``cancel`` flag to ``true``), uncancelling an + event is undefined as event handlers are executed on a + first-come-first-serve basis and later handlers may + re-cancel an uncancelled event. + +.. _listview-edit-before: + ``edit:before`` *cancellable* Invoked before the list view starts editing a record. From 46a037027384aca64ec7c6140446a6de9d80996d Mon Sep 17 00:00:00 2001 From: Xavier Morel Date: Tue, 24 Jul 2012 19:14:19 +0200 Subject: [PATCH 285/349] [IMP] avoid losing the exact value of tree/@editable when checking for editability status bzr revid: xmo@openerp.com-20120724171419-czll83665nptk3n3 --- addons/web/static/src/js/view_list_editable.js | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/addons/web/static/src/js/view_list_editable.js b/addons/web/static/src/js/view_list_editable.js index 697715f2f77..c7654479864 100644 --- a/addons/web/static/src/js/view_list_editable.js +++ b/addons/web/static/src/js/view_list_editable.js @@ -70,11 +70,9 @@ openerp.web.list_editable = function (instance) { _.extend(this.dataset, dataset); }, editable: function () { - if (this.fields_view.arch.attrs.editable || this._context_editable) { - return true; - } - - return this.options.editable; + return this.fields_view.arch.attrs.editable + || this._context_editable + || this.options.editable; }, /** * Replace do_search to handle editability process From 930dd711ed9369e5a918d2df45878e5421001057 Mon Sep 17 00:00:00 2001 From: Launchpad Translations on behalf of openerp <> Date: Wed, 25 Jul 2012 04:52:31 +0000 Subject: [PATCH 286/349] Launchpad automatic translations update. bzr revid: launchpad_translations_on_behalf_of_openerp-20120725043706-7gh4e1622s0jedal bzr revid: launchpad_translations_on_behalf_of_openerp-20120725045231-nh45u4rfluqv50oa --- .../i18n/gu.po | 8 +- addons/marketing/i18n/nb.po | 28 + addons/multi_company/i18n/nb.po | 83 + addons/project_long_term/i18n/es_EC.po | 533 ++++++ addons/report_designer/i18n/nb.po | 98 ++ addons/stock_invoice_directly/i18n/nb.po | 23 + addons/web/i18n/fr_CA.po | 1563 +++++++++++++++++ addons/web_process/i18n/nb.po | 16 +- 8 files changed, 2340 insertions(+), 12 deletions(-) create mode 100644 addons/marketing/i18n/nb.po create mode 100644 addons/multi_company/i18n/nb.po create mode 100644 addons/project_long_term/i18n/es_EC.po create mode 100644 addons/report_designer/i18n/nb.po create mode 100644 addons/stock_invoice_directly/i18n/nb.po create mode 100644 addons/web/i18n/fr_CA.po diff --git a/addons/account_bank_statement_extensions/i18n/gu.po b/addons/account_bank_statement_extensions/i18n/gu.po index e2c0c365d3a..bc5334125dd 100644 --- a/addons/account_bank_statement_extensions/i18n/gu.po +++ b/addons/account_bank_statement_extensions/i18n/gu.po @@ -8,14 +8,14 @@ msgstr "" "Project-Id-Version: openobject-addons\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2012-02-08 00:35+0000\n" -"PO-Revision-Date: 2012-06-01 04:42+0000\n" +"PO-Revision-Date: 2012-07-24 08:18+0000\n" "Last-Translator: Jalpesh Patel(OpenERP) \n" "Language-Team: Gujarati \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2012-07-14 06:27+0000\n" -"X-Generator: Launchpad (build 15614)\n" +"X-Launchpad-Export-Date: 2012-07-25 04:37+0000\n" +"X-Generator: Launchpad (build 15679)\n" #. module: account_bank_statement_extensions #: view:account.bank.statement.line:0 @@ -54,7 +54,7 @@ msgstr "ઉધાર" #: model:ir.actions.act_window,name:account_bank_statement_extensions.action_cancel_statement_line #: model:ir.model,name:account_bank_statement_extensions.model_cancel_statement_line msgid "Cancel selected statement lines" -msgstr "" +msgstr "પસંદ કરેલ નિવેદન લીટીઓ રદ કરો" #. module: account_bank_statement_extensions #: constraint:res.partner.bank:0 diff --git a/addons/marketing/i18n/nb.po b/addons/marketing/i18n/nb.po new file mode 100644 index 00000000000..feae1ba056f --- /dev/null +++ b/addons/marketing/i18n/nb.po @@ -0,0 +1,28 @@ +# Norwegian Bokmal translation for openobject-addons +# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012 +# This file is distributed under the same license as the openobject-addons package. +# FIRST AUTHOR , 2012. +# +msgid "" +msgstr "" +"Project-Id-Version: openobject-addons\n" +"Report-Msgid-Bugs-To: FULL NAME \n" +"POT-Creation-Date: 2012-02-08 00:36+0000\n" +"PO-Revision-Date: 2012-07-24 20:29+0000\n" +"Last-Translator: FULL NAME \n" +"Language-Team: Norwegian Bokmal \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2012-07-25 04:37+0000\n" +"X-Generator: Launchpad (build 15679)\n" + +#. module: marketing +#: model:res.groups,name:marketing.group_marketing_manager +msgid "Manager" +msgstr "Manager" + +#. module: marketing +#: model:res.groups,name:marketing.group_marketing_user +msgid "User" +msgstr "Bruker" diff --git a/addons/multi_company/i18n/nb.po b/addons/multi_company/i18n/nb.po new file mode 100644 index 00000000000..e662ff634b4 --- /dev/null +++ b/addons/multi_company/i18n/nb.po @@ -0,0 +1,83 @@ +# Norwegian Bokmal translation for openobject-addons +# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012 +# This file is distributed under the same license as the openobject-addons package. +# FIRST AUTHOR , 2012. +# +msgid "" +msgstr "" +"Project-Id-Version: openobject-addons\n" +"Report-Msgid-Bugs-To: FULL NAME \n" +"POT-Creation-Date: 2012-02-08 00:36+0000\n" +"PO-Revision-Date: 2012-07-24 20:31+0000\n" +"Last-Translator: FULL NAME \n" +"Language-Team: Norwegian Bokmal \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2012-07-25 04:36+0000\n" +"X-Generator: Launchpad (build 15679)\n" + +#. module: multi_company +#: model:res.company,overdue_msg:multi_company.res_company_odoo +#: model:res.company,overdue_msg:multi_company.res_company_oerp_be +#: model:res.company,overdue_msg:multi_company.res_company_oerp_editor +#: model:res.company,overdue_msg:multi_company.res_company_oerp_in +#: model:res.company,overdue_msg:multi_company.res_company_oerp_us +msgid "" +"\n" +"Date: %(date)s\n" +"\n" +"Dear %(partner_name)s,\n" +"\n" +"Please find in attachment a reminder of all your unpaid invoices, for a " +"total amount due of:\n" +"\n" +"%(followup_amount).2f %(company_currency)s\n" +"\n" +"Thanks,\n" +"--\n" +"%(user_signature)s\n" +"%(company_name)s\n" +" " +msgstr "" + +#. module: multi_company +#: model:product.category,name:multi_company.Odoo1 +msgid "Odoo Offers" +msgstr "" + +#. module: multi_company +#: view:multi_company.default:0 +msgid "Returning" +msgstr "" + +#. module: multi_company +#: model:ir.ui.menu,name:multi_company.menu_custom_multicompany +msgid "Multi-Companies" +msgstr "" + +#. module: multi_company +#: view:multi_company.default:0 +msgid "Multi Company" +msgstr "Flerfirma" + +#. module: multi_company +#: model:ir.actions.act_window,name:multi_company.action_inventory_form +#: model:ir.ui.menu,name:multi_company.menu_action_inventory_form +msgid "Default Company per Object" +msgstr "Default firma pr. objekt" + +#. module: multi_company +#: view:multi_company.default:0 +msgid "Matching" +msgstr "" + +#. module: multi_company +#: view:multi_company.default:0 +msgid "Condition" +msgstr "Betingelse" + +#. module: multi_company +#: model:product.template,name:multi_company.product_product_odoo1_product_template +msgid "Odoo Offer" +msgstr "" diff --git a/addons/project_long_term/i18n/es_EC.po b/addons/project_long_term/i18n/es_EC.po new file mode 100644 index 00000000000..b00191d8a44 --- /dev/null +++ b/addons/project_long_term/i18n/es_EC.po @@ -0,0 +1,533 @@ +# Spanish (Ecuador) translation for openobject-addons +# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012 +# This file is distributed under the same license as the openobject-addons package. +# FIRST AUTHOR , 2012. +# +msgid "" +msgstr "" +"Project-Id-Version: openobject-addons\n" +"Report-Msgid-Bugs-To: FULL NAME \n" +"POT-Creation-Date: 2012-02-08 00:37+0000\n" +"PO-Revision-Date: 2012-07-24 16:59+0000\n" +"Last-Translator: FULL NAME \n" +"Language-Team: Spanish (Ecuador) \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2012-07-25 04:37+0000\n" +"X-Generator: Launchpad (build 15679)\n" + +#. module: project_long_term +#: model:ir.actions.act_window,name:project_long_term.act_project_phases +msgid "Phases" +msgstr "Fases" + +#. module: project_long_term +#: view:project.phase:0 +#: field:project.phase,next_phase_ids:0 +msgid "Next Phases" +msgstr "Siguientes fases" + +#. module: project_long_term +#: view:project.phase:0 +msgid "Project's Tasks" +msgstr "Tareas del proyecto" + +#. module: project_long_term +#: view:project.phase:0 +#: view:project.user.allocation:0 +msgid "Group By..." +msgstr "Agrupar por..." + +#. module: project_long_term +#: field:project.phase,user_ids:0 +msgid "Assigned Users" +msgstr "Usuarios asignados" + +#. module: project_long_term +#: field:project.phase,progress:0 +msgid "Progress" +msgstr "Progreso" + +#. module: project_long_term +#: constraint:project.project:0 +msgid "Error! project start-date must be lower then project end-date." +msgstr "" +"¡Error! La fecha de inicio del proyecto debe ser menor que la fecha final " +"del proyecto." + +#. module: project_long_term +#: view:project.phase:0 +msgid "In Progress Phases" +msgstr "Fases en progreso" + +#. module: project_long_term +#: view:project.phase:0 +msgid "Displaying Settings" +msgstr "" + +#. module: project_long_term +#: field:project.compute.phases,target_project:0 +msgid "Schedule" +msgstr "Planificar" + +#. module: project_long_term +#: constraint:project.task:0 +msgid "Error ! You cannot create recursive tasks." +msgstr "Error ! No puede crear tareas recursivas." + +#. module: project_long_term +#: constraint:project.project:0 +msgid "Error! You cannot assign escalation to the same project!" +msgstr "¡Error! No puede asignar un escalado al mismo proyecto!" + +#. module: project_long_term +#: code:addons/project_long_term/project_long_term.py:126 +#, python-format +msgid "Day" +msgstr "Día" + +#. module: project_long_term +#: model:ir.model,name:project_long_term.model_project_user_allocation +msgid "Phase User Allocation" +msgstr "Asignación Fases de Usuario" + +#. module: project_long_term +#: model:ir.model,name:project_long_term.model_project_task +msgid "Task" +msgstr "Tarea" + +#. module: project_long_term +#: model:ir.actions.act_window,help:project_long_term.act_project_phase +msgid "" +"A project can be split into the different phases. For each phase, you can " +"define your users allocation, describe different tasks and link your phase " +"to previous and next phases, add date constraints for the automated " +"scheduling. Use the long term planning in order to planify your available " +"users, convert your phases into a series of tasks when you start working on " +"the project." +msgstr "" +"Un proyecto se puede dividir en diferentes fases. Para cada fase, se puede " +"definir la asignación de usuarios, describir las diferentes tareas, vincular " +"las fases previas y posteriores de una fase y añadir restricciones de fecha " +"para la programación automática. Utilice la planificación a largo plazo con " +"el fin de Planificar sus usuarios disponibles, convertir sus fases en una " +"serie de tareas cuando se empiece a trabajar en el proyecto." + +#. module: project_long_term +#: selection:project.compute.phases,target_project:0 +msgid "Compute a Single Project" +msgstr "Calcular un sólo proyecto" + +#. module: project_long_term +#: view:project.phase:0 +#: field:project.phase,previous_phase_ids:0 +msgid "Previous Phases" +msgstr "Fases previas" + +#. module: project_long_term +#: help:project.phase,product_uom:0 +msgid "UoM (Unit of Measure) is the unit of measurement for Duration" +msgstr "UdM (Unidad de Medida) es la unidad de medida para la duración" + +#. module: project_long_term +#: model:ir.actions.act_window,name:project_long_term.act_resouce_allocation +#: model:ir.ui.menu,name:project_long_term.menu_resouce_allocation +#: view:project.phase:0 +#: view:project.user.allocation:0 +msgid "Planning of Users" +msgstr "Planificación de Usuarios" + +#. module: project_long_term +#: help:project.phase,date_end:0 +msgid "" +" It's computed by the scheduler according to the start date and the duration." +msgstr "" +" Es calculado por el planificador en función de la fecha de inicio y la " +"duración" + +#. module: project_long_term +#: model:ir.model,name:project_long_term.model_project_project +#: field:project.compute.phases,project_id:0 +#: field:project.compute.tasks,project_id:0 +#: view:project.phase:0 +#: field:project.phase,project_id:0 +#: view:project.task:0 +#: view:project.user.allocation:0 +#: field:project.user.allocation,project_id:0 +msgid "Project" +msgstr "Proyecto" + +#. module: project_long_term +#: code:addons/project_long_term/wizard/project_compute_phases.py:48 +#, python-format +msgid "Error!" +msgstr "Error!" + +#. module: project_long_term +#: selection:project.phase,state:0 +msgid "Cancelled" +msgstr "Cancelado" + +#. module: project_long_term +#: help:project.user.allocation,date_end:0 +msgid "Ending Date" +msgstr "Fecha de cierre" + +#. module: project_long_term +#: field:project.phase,constraint_date_end:0 +msgid "Deadline" +msgstr "Fecha límite" + +#. module: project_long_term +#: selection:project.compute.phases,target_project:0 +msgid "Compute All My Projects" +msgstr "Calcular todos los proyectos" + +#. module: project_long_term +#: view:project.compute.phases:0 +#: view:project.compute.tasks:0 +msgid "_Cancel" +msgstr "Cancelar" + +#. module: project_long_term +#: code:addons/project_long_term/project_long_term.py:141 +#, python-format +msgid " (copy)" +msgstr " (copiar)" + +#. module: project_long_term +#: view:project.user.allocation:0 +msgid "Project User Allocation" +msgstr "Asignación de usuarios a un proyecto" + +#. module: project_long_term +#: view:project.phase:0 +#: field:project.phase,state:0 +msgid "State" +msgstr "Estado" + +#. module: project_long_term +#: view:project.compute.phases:0 +#: view:project.compute.tasks:0 +msgid "C_ompute" +msgstr "C_alcular" + +#. module: project_long_term +#: view:project.phase:0 +#: selection:project.phase,state:0 +msgid "New" +msgstr "Nuevo" + +#. module: project_long_term +#: help:project.phase,progress:0 +msgid "Computed based on related tasks" +msgstr "Calculo basado en las tareas relacionadas" + +#. module: project_long_term +#: field:project.phase,product_uom:0 +msgid "Duration UoM" +msgstr "UdM duración" + +#. module: project_long_term +#: field:project.phase,constraint_date_start:0 +msgid "Minimum Start Date" +msgstr "Fecha de inicio mínima" + +#. module: project_long_term +#: model:ir.ui.menu,name:project_long_term.menu_pm_users_project1 +#: model:ir.ui.menu,name:project_long_term.menu_view_resource +msgid "Resources" +msgstr "Recursos" + +#. module: project_long_term +#: view:project.phase:0 +msgid "My Projects" +msgstr "Mis Proyectos" + +#. module: project_long_term +#: help:project.user.allocation,date_start:0 +msgid "Starting Date" +msgstr "Fecha de inicio" + +#. module: project_long_term +#: model:ir.actions.act_window,name:project_long_term.project_phase_task_list +msgid "Related Tasks" +msgstr "Tareas relacionadas" + +#. module: project_long_term +#: view:project.phase:0 +msgid "New Phases" +msgstr "Nueva Fase" + +#. module: project_long_term +#: code:addons/project_long_term/wizard/project_compute_phases.py:48 +#, python-format +msgid "Please specify a project to schedule." +msgstr "Por favor, especifique un proyecto para planificar." + +#. module: project_long_term +#: help:project.phase,constraint_date_start:0 +msgid "force the phase to start after this date" +msgstr "Forzar que la fase epiece después de esta fecha" + +#. module: project_long_term +#: field:project.phase,task_ids:0 +msgid "Project Tasks" +msgstr "Tareas del proyecto" + +#. module: project_long_term +#: help:project.phase,date_start:0 +msgid "" +"It's computed by the scheduler according the project date or the end date of " +"the previous phase." +msgstr "" +"Es calculado por el planificador en función de la fecha inicio o fecha fin " +"de la fase anterior" + +#. module: project_long_term +#: view:project.phase:0 +msgid "Month" +msgstr "Mes" + +#. module: project_long_term +#: constraint:project.phase:0 +msgid "Phase start-date must be lower than phase end-date." +msgstr "La fecha-inicio de la fase debe ser menor que la fecha-fin." + +#. module: project_long_term +#: view:project.phase:0 +msgid "Start Month" +msgstr "Mes de inicio" + +#. module: project_long_term +#: field:project.phase,date_start:0 +#: field:project.user.allocation,date_start:0 +msgid "Start Date" +msgstr "Fecha inicio" + +#. module: project_long_term +#: help:project.phase,constraint_date_end:0 +msgid "force the phase to finish before this date" +msgstr "Forzar que la fase termine antes de esta fecha" + +#. module: project_long_term +#: help:project.phase,user_ids:0 +msgid "" +"The ressources on the project can be computed automatically by the scheduler" +msgstr "" +"Los Recursos del proyecto se puede calcular automáticamente por el " +"planificador" + +#. module: project_long_term +#: view:project.phase:0 +msgid "Draft" +msgstr "Borrador" + +#. module: project_long_term +#: view:project.phase:0 +msgid "Pending Phases" +msgstr "Fases pendientes" + +#. module: project_long_term +#: view:project.phase:0 +#: selection:project.phase,state:0 +msgid "Pending" +msgstr "Pendiente" + +#. module: project_long_term +#: view:project.user.allocation:0 +#: field:project.user.allocation,user_id:0 +msgid "User" +msgstr "Usuario" + +#. module: project_long_term +#: model:ir.model,name:project_long_term.model_project_compute_tasks +msgid "Project Compute Tasks" +msgstr "Calcular tareas del proyecto" + +#. module: project_long_term +#: view:project.phase:0 +msgid "Constraints" +msgstr "Restricciones" + +#. module: project_long_term +#: help:project.phase,sequence:0 +msgid "Gives the sequence order when displaying a list of phases." +msgstr "Indica el orden cuando se muestra la lista de fases" + +#. module: project_long_term +#: model:ir.actions.act_window,name:project_long_term.act_project_phase +#: model:ir.actions.act_window,name:project_long_term.act_project_phase_list +#: model:ir.ui.menu,name:project_long_term.menu_project_phase +#: model:ir.ui.menu,name:project_long_term.menu_project_phase_list +#: view:project.phase:0 +#: field:project.project,phase_ids:0 +msgid "Project Phases" +msgstr "Fases del proyecto" + +#. module: project_long_term +#: view:project.phase:0 +#: selection:project.phase,state:0 +msgid "Done" +msgstr "Realizado" + +#. module: project_long_term +#: view:project.phase:0 +msgid "Cancel" +msgstr "Cancelar" + +#. module: project_long_term +#: view:project.phase:0 +#: selection:project.phase,state:0 +msgid "In Progress" +msgstr "En progreso" + +#. module: project_long_term +#: view:project.phase:0 +msgid "Remaining Hours" +msgstr "Horas restantes" + +#. module: project_long_term +#: constraint:project.task:0 +msgid "Error ! Task end-date must be greater then task start-date" +msgstr "" +"Error ! La fecha final de la tarea debe ser mayor que la fecha de inicio" + +#. module: project_long_term +#: model:ir.ui.menu,name:project_long_term.menu_view_resource_calendar +msgid "Working Time" +msgstr "Horario de trabajo" + +#. module: project_long_term +#: model:ir.actions.act_window,name:project_long_term.action_project_compute_phases +#: model:ir.ui.menu,name:project_long_term.menu_compute_phase +#: view:project.compute.phases:0 +msgid "Schedule Phases" +msgstr "Planificación de fases" + +#. module: project_long_term +#: view:project.phase:0 +msgid "Start Phase" +msgstr "Iniciar fase" + +#. module: project_long_term +#: view:project.phase:0 +msgid "Total Hours" +msgstr "Total horas" + +#. module: project_long_term +#: view:project.user.allocation:0 +msgid "Users" +msgstr "Usuarios" + +#. module: project_long_term +#: view:project.user.allocation:0 +msgid "Phase" +msgstr "Fase" + +#. module: project_long_term +#: help:project.phase,state:0 +msgid "" +"If the phase is created the state 'Draft'.\n" +" If the phase is started, the state becomes 'In Progress'.\n" +" If review is needed the phase is in 'Pending' state. " +" \n" +" If the phase is over, the states is set to 'Done'." +msgstr "" +"Si la fase se crea, el estado es \"Borrador\".\n" +" Si la fase comienza, el estado cambia a \"En Proceso\".\n" +" Si se necesita revisión, la fase está en estado \"Pendiente\".\n" +" Si la fase está terminada, el estado se fija en \"z\"." + +#. module: project_long_term +#: field:project.phase,date_end:0 +#: field:project.user.allocation,date_end:0 +msgid "End Date" +msgstr "Fecha de finalización" + +#. module: project_long_term +#: field:project.phase,name:0 +msgid "Name" +msgstr "Nombre" + +#. module: project_long_term +#: view:project.phase:0 +msgid "Tasks Details" +msgstr "Detalles de tareas" + +#. module: project_long_term +#: field:project.phase,duration:0 +msgid "Duration" +msgstr "Duración" + +#. module: project_long_term +#: view:project.phase:0 +msgid "Project Users" +msgstr "Usuarios del proyecto" + +#. module: project_long_term +#: model:ir.model,name:project_long_term.model_project_phase +#: view:project.phase:0 +#: view:project.task:0 +#: field:project.task,phase_id:0 +#: field:project.user.allocation,phase_id:0 +msgid "Project Phase" +msgstr "Fase del proyecto" + +#. module: project_long_term +#: model:ir.actions.act_window,help:project_long_term.action_project_compute_phases +msgid "" +"To schedule phases of all or a specified project. It then open a gantt " +"view.\n" +" " +msgstr "" +"Para planificar las fases en su totalidad o de un proyecto específico. " +"Entonces, abra una vista de Gantt.\n" +" " + +#. module: project_long_term +#: model:ir.model,name:project_long_term.model_project_compute_phases +msgid "Project Compute Phases" +msgstr "Calcular fases del proyecto" + +#. module: project_long_term +#: constraint:project.phase:0 +msgid "Loops in phases not allowed" +msgstr "No se permiten bucles en fases" + +#. module: project_long_term +#: field:project.phase,sequence:0 +msgid "Sequence" +msgstr "Secuencia" + +#. module: project_long_term +#: model:ir.ui.menu,name:project_long_term.menu_view_resource_calendar_leaves +msgid "Resource Leaves" +msgstr "Ausencia de recursos" + +#. module: project_long_term +#: model:ir.actions.act_window,name:project_long_term.action_project_compute_tasks +#: model:ir.ui.menu,name:project_long_term.menu_compute_tasks +#: view:project.compute.tasks:0 +msgid "Schedule Tasks" +msgstr "Planificar tareas" + +#. module: project_long_term +#: help:project.phase,duration:0 +msgid "By default in days" +msgstr "Por defecto en días" + +#. module: project_long_term +#: view:project.phase:0 +#: field:project.phase,user_force_ids:0 +msgid "Force Assigned Users" +msgstr "Forzar asignación de usuarios" + +#. module: project_long_term +#: model:ir.ui.menu,name:project_long_term.menu_phase_schedule +msgid "Scheduling" +msgstr "Planificación" + +#~ msgid "Displaying settings" +#~ msgstr "Mostrando configuración" diff --git a/addons/report_designer/i18n/nb.po b/addons/report_designer/i18n/nb.po new file mode 100644 index 00000000000..4715435a323 --- /dev/null +++ b/addons/report_designer/i18n/nb.po @@ -0,0 +1,98 @@ +# Norwegian Bokmal translation for openobject-addons +# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012 +# This file is distributed under the same license as the openobject-addons package. +# FIRST AUTHOR , 2012. +# +msgid "" +msgstr "" +"Project-Id-Version: openobject-addons\n" +"Report-Msgid-Bugs-To: FULL NAME \n" +"POT-Creation-Date: 2011-01-11 11:15+0000\n" +"PO-Revision-Date: 2012-07-24 20:36+0000\n" +"Last-Translator: FULL NAME \n" +"Language-Team: Norwegian Bokmal \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2012-07-25 04:37+0000\n" +"X-Generator: Launchpad (build 15679)\n" + +#. module: report_designer +#: model:ir.actions.act_window,name:report_designer.action_report_designer_installer +#: view:report_designer.installer:0 +msgid "Reporting Tools Configuration" +msgstr "Konfigurasjon rapportverktøy" + +#. module: report_designer +#: field:report_designer.installer,base_report_creator:0 +msgid "Query Builder" +msgstr "Avansert søk" + +#. module: report_designer +#: view:report_designer.installer:0 +msgid "Configure" +msgstr "Konfigurer" + +#. module: report_designer +#: view:report_designer.installer:0 +msgid "title" +msgstr "tittel" + +#. module: report_designer +#: model:ir.model,name:report_designer.model_report_designer_installer +msgid "report_designer.installer" +msgstr "report_designer.installer" + +#. module: report_designer +#: field:report_designer.installer,config_logo:0 +msgid "Image" +msgstr "Bilde" + +#. module: report_designer +#: field:report_designer.installer,base_report_designer:0 +msgid "OpenOffice Report Designer" +msgstr "OpenOffice Rapport Designer" + +#. module: report_designer +#: model:ir.module.module,shortdesc:report_designer.module_meta_information +msgid "Reporting Tools" +msgstr "Rapport verktøy" + +#. module: report_designer +#: view:report_designer.installer:0 +msgid "" +"OpenERP's built-in reporting abilities can be improved even further with " +"some of the following applications" +msgstr "" + +#. module: report_designer +#: view:report_designer.installer:0 +msgid "Configure Reporting Tools" +msgstr "Konfigurer rapportverktøy" + +#. module: report_designer +#: help:report_designer.installer,base_report_creator:0 +msgid "" +"Allows you to create any statistic reports on several objects. It's a SQL " +"query builder and browser for end users." +msgstr "" + +#. module: report_designer +#: help:report_designer.installer,base_report_designer:0 +msgid "" +"Adds wizards to Import/Export .SXW report which you can modify in " +"OpenOffice.Once you have modified it you can upload the report using the " +"same wizard." +msgstr "" + +#. module: report_designer +#: model:ir.module.module,description:report_designer.module_meta_information +msgid "" +"Installer for reporting tools selection\n" +" " +msgstr "" + +#. module: report_designer +#: field:report_designer.installer,progress:0 +msgid "Configuration Progress" +msgstr "Konfigurasjonsprosess" diff --git a/addons/stock_invoice_directly/i18n/nb.po b/addons/stock_invoice_directly/i18n/nb.po new file mode 100644 index 00000000000..d9ecfa5b245 --- /dev/null +++ b/addons/stock_invoice_directly/i18n/nb.po @@ -0,0 +1,23 @@ +# Norwegian Bokmal translation for openobject-addons +# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012 +# This file is distributed under the same license as the openobject-addons package. +# FIRST AUTHOR , 2012. +# +msgid "" +msgstr "" +"Project-Id-Version: openobject-addons\n" +"Report-Msgid-Bugs-To: FULL NAME \n" +"POT-Creation-Date: 2012-02-08 00:37+0000\n" +"PO-Revision-Date: 2012-07-24 20:34+0000\n" +"Last-Translator: FULL NAME \n" +"Language-Team: Norwegian Bokmal \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2012-07-25 04:36+0000\n" +"X-Generator: Launchpad (build 15679)\n" + +#. module: stock_invoice_directly +#: model:ir.model,name:stock_invoice_directly.model_stock_partial_picking +msgid "Partial Picking Processing Wizard" +msgstr "Veiviser for delplukking" diff --git a/addons/web/i18n/fr_CA.po b/addons/web/i18n/fr_CA.po new file mode 100644 index 00000000000..f6426975e7d --- /dev/null +++ b/addons/web/i18n/fr_CA.po @@ -0,0 +1,1563 @@ +# French (Canada) translation for openerp-web +# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012 +# This file is distributed under the same license as the openerp-web package. +# FIRST AUTHOR , 2012. +# +msgid "" +msgstr "" +"Project-Id-Version: openerp-web\n" +"Report-Msgid-Bugs-To: FULL NAME \n" +"POT-Creation-Date: 2012-07-02 09:06+0200\n" +"PO-Revision-Date: 2012-07-25 03:30+0000\n" +"Last-Translator: FULL NAME \n" +"Language-Team: French (Canada) \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2012-07-25 04:52+0000\n" +"X-Generator: Launchpad (build 15679)\n" + +#. openerp-web +#: addons/web/static/src/js/chrome.js:176 +#: addons/web/static/src/js/chrome.js:202 +#: addons/web/static/src/js/chrome.js:380 +#: addons/web/static/src/js/view_form.js:457 +#: addons/web/static/src/js/view_form.js:1292 +#: addons/web/static/src/xml/base.xml:1701 +msgid "Ok" +msgstr "" + +#. openerp-web +#: addons/web/static/src/js/chrome.js:184 +msgid "Send OpenERP Enterprise Report" +msgstr "" + +#. openerp-web +#: addons/web/static/src/js/chrome.js:198 +msgid "Dont send" +msgstr "" + +#. openerp-web +#: addons/web/static/src/js/chrome.js:1119 +msgid "Client Error" +msgstr "" + +#. openerp-web +#: addons/web/static/src/js/chrome.js:260 +#, python-format +msgid "Loading (%d)" +msgstr "" + +#. openerp-web +#: addons/web/static/src/js/chrome.js:292 +msgid "Invalid database name" +msgstr "" + +#. openerp-web +#: addons/web/static/src/js/chrome.js:455 +msgid "Backed" +msgstr "" + +#. openerp-web +#: addons/web/static/src/js/chrome.js:456 +msgid "Database backed up successfully" +msgstr "" + +#. openerp-web +#: addons/web/static/src/js/chrome.js:499 +msgid "Restored" +msgstr "" + +#. openerp-web +#: addons/web/static/src/js/chrome.js:499 +msgid "Database restored successfully" +msgstr "" + +#. openerp-web +#: addons/web/static/src/js/chrome.js:783 +#: addons/web/static/src/xml/base.xml:226 +#: addons/web/static/src/xml/base.xml:1735 +msgid "Change Password" +msgstr "" + +#. openerp-web +#: addons/web/static/src/js/chrome.js:759 +#: addons/web/static/src/xml/base.xml:356 +msgid "Preferences" +msgstr "" + +#. openerp-web +#: addons/web/static/src/js/chrome.js:763 +msgid "Change password" +msgstr "" + +#. openerp-web +#: addons/web/static/src/js/chrome.js:762 +#: addons/web/static/src/js/search.js:241 +#: addons/web/static/src/js/search.js:300 +#: addons/web/static/src/js/view_editor.js:95 +#: addons/web/static/src/js/view_editor.js:836 +#: addons/web/static/src/js/view_editor.js:962 +#: addons/web/static/src/js/view_form.js:1287 +#: addons/web/static/src/xml/base.xml:743 +#: addons/web/static/src/xml/base.xml:1502 +#: addons/web/static/src/xml/base.xml:1512 +#: addons/web/static/src/xml/base.xml:1521 +msgid "Cancel" +msgstr "" + +#. openerp-web +#: addons/web/static/src/js/chrome.js:764 +#: addons/web/static/src/js/view_editor.js:73 +#: addons/web/static/src/js/views.js:967 addons/web/static/src/xml/base.xml:742 +#: addons/web/static/src/xml/base.xml:1506 +#: addons/web/static/src/xml/base.xml:1520 +msgid "Save" +msgstr "" + +#. openerp-web +#: addons/web/static/src/js/chrome.js:680 +#: addons/web/static/src/xml/base.xml:359 +msgid "About" +msgstr "" + +#. openerp-web +#: addons/web/static/src/js/chrome.js:1052 +msgid "OpenERP - Unsupported/Community Version" +msgstr "" + +#. openerp-web +#: addons/web/static/src/js/coresetup.js:619 +msgid "less than a minute ago" +msgstr "" + +#. openerp-web +#: addons/web/static/src/js/coresetup.js:620 +msgid "about a minute ago" +msgstr "" + +#. openerp-web +#: addons/web/static/src/js/coresetup.js:621 +#, python-format +msgid "%d minutes ago" +msgstr "" + +#. openerp-web +#: addons/web/static/src/js/coresetup.js:622 +msgid "about an hour ago" +msgstr "" + +#. openerp-web +#: addons/web/static/src/js/coresetup.js:623 +#, python-format +msgid "%d hours ago" +msgstr "" + +#. openerp-web +#: addons/web/static/src/js/coresetup.js:624 +msgid "a day ago" +msgstr "" + +#. openerp-web +#: addons/web/static/src/js/coresetup.js:625 +#, python-format +msgid "%d days ago" +msgstr "" + +#. openerp-web +#: addons/web/static/src/js/coresetup.js:626 +msgid "about a month ago" +msgstr "" + +#. openerp-web +#: addons/web/static/src/js/coresetup.js:627 +#, python-format +msgid "%d months ago" +msgstr "" + +#. openerp-web +#: addons/web/static/src/js/coresetup.js:628 +msgid "about a year ago" +msgstr "" + +#. openerp-web +#: addons/web/static/src/js/coresetup.js:629 +#, python-format +msgid "%d years ago" +msgstr "" + +#. openerp-web +#: addons/web/static/src/js/data_export.js:6 +msgid "Export Data" +msgstr "" + +#. openerp-web +#: addons/web/static/src/js/data_export.js:19 +#: addons/web/static/src/js/data_import.js:70 +#: addons/web/static/src/js/view_editor.js:49 +#: addons/web/static/src/js/view_editor.js:398 +#: addons/web/static/src/js/view_form.js:734 +#: addons/web/static/src/js/view_form.js:3298 +#: addons/web/static/src/js/views.js:968 +msgid "Close" +msgstr "" + +#. openerp-web +#: addons/web/static/src/js/data_export.js:20 +msgid "Export To File" +msgstr "" + +#. openerp-web +#: addons/web/static/src/js/data_export.js:126 +msgid "Please enter save field list name" +msgstr "" + +#. openerp-web +#: addons/web/static/src/js/data_export.js:362 +msgid "Please select fields to save export list..." +msgstr "" + +#. openerp-web +#: addons/web/static/src/js/data_export.js:375 +msgid "Please select fields to export..." +msgstr "" + +#. openerp-web +#: addons/web/static/src/js/data_import.js:34 +msgid "Import Data" +msgstr "" + +#. openerp-web +#: addons/web/static/src/js/data_import.js:71 +msgid "Import File" +msgstr "" + +#. openerp-web +#: addons/web/static/src/js/data_import.js:106 +msgid "External ID" +msgstr "" + +#. openerp-web +#: addons/web/static/src/js/data_import.js:346 +msgid "" +"Destination fields should only be selected once, some fields are selected " +"more than once:" +msgstr "" + +#. openerp-web +#: addons/web/static/src/js/data_import.js:383 +msgid "*Required Fields are not selected :" +msgstr "" + +#. openerp-web +#: addons/web/static/src/js/formats.js:139 +#, python-format +msgid "(%d records)" +msgstr "" + +#. openerp-web +#: addons/web/static/src/js/formats.js:325 +#: addons/web/static/src/js/view_page.js:268 +msgid "Download" +msgstr "" + +#. openerp-web +#: addons/web/static/src/js/formats.js:330 +#, python-format +msgid "Download \"%s\"" +msgstr "" + +#. openerp-web +#: addons/web/static/src/js/search.js:437 +msgid "Invalid Search" +msgstr "" + +#. openerp-web +#: addons/web/static/src/js/search.js:437 +msgid "triggered from search view" +msgstr "" + +#. openerp-web +#: addons/web/static/src/js/search.js:528 +#, python-format +msgid "Incorrect value for field %(fieldname)s: [%(value)s] is %(message)s" +msgstr "" + +#. openerp-web +#: addons/web/static/src/js/search.js:948 +#, python-format +msgid "Filter on: %s" +msgstr "" + +#. openerp-web +#: addons/web/static/src/js/search.js:999 +msgid "Filter" +msgstr "" + +#. openerp-web +#: addons/web/static/src/js/search.js:1108 +#, python-format +msgid "Group by: %s" +msgstr "" + +#. openerp-web +#: addons/web/static/src/js/search.js:1132 +msgid "GroupBy" +msgstr "" + +#. openerp-web +#: addons/web/static/src/js/search.js:1267 +#, python-format +msgid "Search %(field)s for: %(value)s" +msgstr "" + +#. openerp-web +#: addons/web/static/src/js/search.js:869 +msgid "not a valid integer" +msgstr "" + +#. openerp-web +#: addons/web/static/src/js/search.js:883 +msgid "not a valid number" +msgstr "" + +#. openerp-web +#: addons/web/static/src/js/search.js:962 +#: addons/web/static/src/xml/base.xml:973 +msgid "Yes" +msgstr "" + +#. openerp-web +#: addons/web/static/src/js/search.js:963 +msgid "No" +msgstr "" + +#. openerp-web +#: addons/web/static/src/js/search.js:1416 +#, python-format +msgid "Search %(field)s at: %(value)s" +msgstr "" + +#. openerp-web +#: addons/web/static/src/xml/base.xml:1286 +msgid "Filters" +msgstr "" + +#. openerp-web +#: addons/web/static/src/js/search.js:1762 +msgid "Advanced" +msgstr "" + +#. openerp-web +#: addons/web/static/src/js/search.js:1853 +#, python-format +msgid "%(field)s %(operator)s \"%(value)s\"" +msgstr "" + +#. openerp-web +#: addons/web/static/src/js/search.js:1341 +msgid "contains" +msgstr "" + +#. openerp-web +#: addons/web/static/src/js/search.js:1342 +msgid "doesn't contain" +msgstr "" + +#. openerp-web +#: addons/web/static/src/js/search.js:1343 +#: addons/web/static/src/js/search.js:1359 +#: addons/web/static/src/js/search.js:1380 +#: addons/web/static/src/js/search.js:1401 +#: addons/web/static/src/js/search.js:1424 +msgid "is equal to" +msgstr "" + +#. openerp-web +#: addons/web/static/src/js/search.js:1344 +#: addons/web/static/src/js/search.js:1360 +#: addons/web/static/src/js/search.js:1381 +#: addons/web/static/src/js/search.js:1402 +#: addons/web/static/src/js/search.js:1425 +msgid "is not equal to" +msgstr "" + +#. openerp-web +#: addons/web/static/src/js/search.js:1345 +#: addons/web/static/src/js/search.js:1361 +#: addons/web/static/src/js/search.js:1382 +#: addons/web/static/src/js/search.js:1403 +#: addons/web/static/src/js/search.js:1426 +msgid "greater than" +msgstr "" + +#. openerp-web +#: addons/web/static/src/js/search.js:1346 +#: addons/web/static/src/js/search.js:1362 +#: addons/web/static/src/js/search.js:1383 +#: addons/web/static/src/js/search.js:1404 +#: addons/web/static/src/js/search.js:1427 +msgid "less than" +msgstr "" + +#. openerp-web +#: addons/web/static/src/js/search.js:1347 +#: addons/web/static/src/js/search.js:1363 +#: addons/web/static/src/js/search.js:1384 +#: addons/web/static/src/js/search.js:1405 +#: addons/web/static/src/js/search.js:1428 +msgid "greater or equal than" +msgstr "" + +#. openerp-web +#: addons/web/static/src/js/search.js:1348 +#: addons/web/static/src/js/search.js:1364 +#: addons/web/static/src/js/search.js:1385 +#: addons/web/static/src/js/search.js:1406 +#: addons/web/static/src/js/search.js:1429 +msgid "less or equal than" +msgstr "" + +#. openerp-web +#: addons/web/static/src/js/search.js:1419 +#: addons/web/static/src/js/search.js:1444 +msgid "is" +msgstr "" + +#. openerp-web +#: addons/web/static/src/js/search.js:1445 +msgid "is not" +msgstr "" + +#. openerp-web +#: addons/web/static/src/js/search.js:1459 +msgid "is true" +msgstr "" + +#. openerp-web +#: addons/web/static/src/js/search.js:1460 +msgid "is false" +msgstr "" + +#. openerp-web +#: addons/web/static/src/js/view_editor.js:20 +#, python-format +msgid "Manage Views (%s)" +msgstr "" + +#. openerp-web +#: addons/web/static/src/js/view_editor.js:46 +#: addons/web/static/src/js/view_list.js:17 +#: addons/web/static/src/xml/base.xml:100 +#: addons/web/static/src/xml/base.xml:327 +#: addons/web/static/src/xml/base.xml:761 +msgid "Create" +msgstr "" + +#. openerp-web +#: addons/web/static/src/js/view_editor.js:47 +#: addons/web/static/src/xml/base.xml:483 +#: addons/web/static/src/xml/base.xml:760 +msgid "Edit" +msgstr "" + +#. openerp-web +#: addons/web/static/src/js/view_editor.js:48 +#: addons/web/static/src/xml/base.xml:1653 +msgid "Remove" +msgstr "" + +#. openerp-web +#: addons/web/static/src/js/view_editor.js:71 +#, python-format +msgid "Create a view (%s)" +msgstr "" + +#. openerp-web +#: addons/web/static/src/js/view_editor.js:168 +msgid "Do you really want to remove this view?" +msgstr "" + +#. openerp-web +#: addons/web/static/src/js/view_editor.js:364 +#, python-format +msgid "View Editor %d - %s" +msgstr "" + +#. openerp-web +#: addons/web/static/src/js/view_editor.js:367 +msgid "Inherited View" +msgstr "" + +#. openerp-web +#: addons/web/static/src/js/view_editor.js:371 +msgid "Do you really wants to create an inherited view here?" +msgstr "" + +#. openerp-web +#: addons/web/static/src/js/view_editor.js:381 +msgid "Preview" +msgstr "" + +#. openerp-web +#: addons/web/static/src/js/view_editor.js:501 +msgid "Do you really want to remove this node?" +msgstr "" + +#. openerp-web +#: addons/web/static/src/js/view_editor.js:815 +#: addons/web/static/src/js/view_editor.js:939 +msgid "Properties" +msgstr "" + +#. openerp-web +#: addons/web/static/src/js/view_editor.js:818 +#: addons/web/static/src/js/view_editor.js:942 +msgid "Update" +msgstr "" + +#. openerp-web +#: addons/web/static/src/js/view_form.js:16 +#: addons/web/static/src/js/view_form.js:210 +msgid "Form" +msgstr "" + +#. openerp-web +#: addons/web/static/src/xml/base.xml:632 +#: addons/web/static/src/xml/base.xml:763 +#: addons/web/static/src/xml/base.xml:1714 +msgid "Delete" +msgstr "" + +#. openerp-web +#: addons/web/static/src/xml/base.xml:762 +msgid "Duplicate" +msgstr "" + +#. openerp-web +#: addons/web/static/src/js/view_form.js:133 +#: addons/web/static/src/js/view_form.js:728 +msgid "Set Default" +msgstr "" + +#. openerp-web +#: addons/web/static/src/js/view_page.js:59 +msgid "Do you really want to delete this record?" +msgstr "" + +#. openerp-web +#: addons/web/static/src/js/view_form.js:508 +msgid "" +"Warning, the record has been modified, your changes will be discarded." +msgstr "" + +#. openerp-web +#: addons/web/static/src/js/view_form.js:735 +msgid "Save default" +msgstr "" + +#. openerp-web +#: addons/web/static/src/js/view_form.js:867 +#, python-format +msgid "Unknown operator %s in domain %s" +msgstr "" + +#. openerp-web +#: addons/web/static/src/js/view_form.js:875 +#, python-format +msgid "Unknown field %s in domain %s" +msgstr "" + +#. openerp-web +#: addons/web/static/src/js/view_form.js:913 +#, python-format +msgid "Unsupported operator %s in domain %s" +msgstr "" + +#. openerp-web +#: addons/web/static/src/js/view_form.js:1284 +msgid "Confirm" +msgstr "" + +#. openerp-web +#: addons/web/static/src/js/view_form.js:2193 +msgid "   Search More..." +msgstr "" + +#. openerp-web +#: addons/web/static/src/js/view_form.js:2211 +#, python-format +msgid "   Create \"%s\"" +msgstr "" + +#. openerp-web +#: addons/web/static/src/js/view_form.js:2217 +msgid "   Create and Edit..." +msgstr "" + +#. openerp-web +#: addons/web/static/src/js/view_form.js:2250 +#: addons/web/static/src/js/views.js:680 +msgid "Search: " +msgstr "" + +#. openerp-web +#: addons/web/static/src/js/view_form.js:2250 +#: addons/web/static/src/js/view_form.js:2738 +msgid "Create: " +msgstr "" + +#. openerp-web +#: addons/web/static/src/js/view_form.js:2040 +#: addons/web/static/src/js/view_form.js:2766 +#: addons/web/static/src/js/view_form.js:2991 +msgid "Open: " +msgstr "" + +#. openerp-web +#: addons/web/static/src/js/view_form.js:2911 +#: addons/web/static/src/xml/base.xml:755 +#: addons/web/static/src/xml/base.xml:777 +#: addons/web/static/src/xml/base.xml:1652 +msgid "Add" +msgstr "" + +#. openerp-web +#: addons/web/static/src/js/view_form.js:2971 +msgid "Add: " +msgstr "" + +#. openerp-web +#: addons/web/static/src/js/view_form.js:4230 +msgid "Save As..." +msgstr "" + +#. openerp-web +#: addons/web/static/src/js/view_form.js:4230 +msgid "The field is empty, there's nothing to save !" +msgstr "" + +#. openerp-web +#: addons/web/static/src/js/view_list.js:8 +msgid "List" +msgstr "" + +#. openerp-web +#: addons/web/static/src/js/view_list.js:277 +msgid "Unlimited" +msgstr "" + +#. openerp-web +#: addons/web/static/src/js/views.js:819 +#: addons/web/static/src/xml/base.xml:1742 +msgid "Import" +msgstr "" + +#. openerp-web +#: addons/web/static/src/js/views.js:822 +#: addons/web/static/src/xml/base.xml:1612 +msgid "Export" +msgstr "" + +#. openerp-web +#: addons/web/static/src/js/view_list.js:374 +msgid "Group" +msgstr "" + +#. openerp-web +#: addons/web/static/src/js/view_list.js:549 +msgid "Do you really want to remove these records?" +msgstr "" + +#. openerp-web +#: addons/web/static/src/js/views.js:925 +msgid "Warning" +msgstr "" + +#. openerp-web +#: addons/web/static/src/js/view_list.js:716 +msgid "You must select at least one record." +msgstr "" + +#. openerp-web +#: addons/web/static/src/js/view_list.js:1243 +msgid "Undefined" +msgstr "" + +#. openerp-web +#: addons/web/static/src/js/view_list.js:1342 +#, python-format +msgid "%(page)d/%(page_count)d" +msgstr "" + +#. openerp-web +#: addons/web/static/src/js/view_tree.js:11 +msgid "Tree" +msgstr "" + +#. openerp-web +#: addons/web/static/src/js/views.js:570 addons/web/static/src/xml/base.xml:480 +msgid "Fields View Get" +msgstr "" + +#. openerp-web +#: addons/web/static/src/js/views.js:578 +#, python-format +msgid "View Log (%s)" +msgstr "" + +#. openerp-web +#: addons/web/static/src/js/views.js:605 +#, python-format +msgid "Model %s fields" +msgstr "" + +#. openerp-web +#: addons/web/static/src/js/views.js:615 addons/web/static/src/xml/base.xml:482 +msgid "Manage Views" +msgstr "" + +#. openerp-web +#: addons/web/static/src/js/views.js:616 +msgid "Could not find current view declaration" +msgstr "" + +#. openerp-web +#: addons/web/static/src/js/views.js:716 +msgid "Print" +msgstr "" + +#. openerp-web +#: addons/web/static/src/js/views.js:717 +msgid "Attachment" +msgstr "" + +#. openerp-web +#: addons/web/static/src/js/views.js:718 addons/web/static/src/xml/base.xml:276 +msgid "More" +msgstr "" + +#. openerp-web +#: addons/web/static/src/js/views.js:810 +msgid "Translate" +msgstr "" + +#. openerp-web +#: addons/web/static/src/js/views.js:812 +msgid "Technical translation" +msgstr "" + +#. openerp-web +#: addons/web/static/src/js/views.js:924 +msgid "You must choose at least one record." +msgstr "" + +#. openerp-web +#: addons/web/static/src/js/views.js:875 +msgid "Uploading..." +msgstr "" + +#. openerp-web +#: addons/web/static/src/js/views.js:885 +msgid "Do you really want to delete this attachment ?" +msgstr "" + +#. openerp-web +#: addons/web/static/src/js/views.js:962 +msgid "Translations" +msgstr "" + +#. openerp-web +#: addons/web/static/src/xml/base.xml:52 +msgid "Loading..." +msgstr "" + +#. openerp-web +#: addons/web/static/src/xml/base.xml:251 +msgid "" +"Your version of OpenERP is unsupported. Support & maintenance services are " +"available here:" +msgstr "" + +#. openerp-web +#: addons/web/static/src/xml/base.xml:251 +msgid "OpenERP Entreprise" +msgstr "" + +#. openerp-web +#: addons/web/static/src/xml/base.xml:256 +msgid "OpenERP Enterprise Contract." +msgstr "" + +#. openerp-web +#: addons/web/static/src/xml/base.xml:257 +msgid "Your report will be sent to the OpenERP Enterprise team." +msgstr "" + +#. openerp-web +#: addons/web/static/src/xml/base.xml:259 +msgid "Summary:" +msgstr "" + +#. openerp-web +#: addons/web/static/src/xml/base.xml:263 +msgid "Description:" +msgstr "" + +#. openerp-web +#: addons/web/static/src/xml/base.xml:267 +msgid "What you did:" +msgstr "" + +#. openerp-web +#: addons/web/static/src/xml/base.xml:297 +msgid "Invalid username or password" +msgstr "" + +#. openerp-web +#: addons/web/static/src/xml/base.xml:116 +#: addons/web/static/src/xml/base.xml:150 +#: addons/web/static/src/xml/base.xml:301 +msgid "Database:" +msgstr "" + +#. openerp-web +#: addons/web/static/src/xml/base.xml:306 +msgid "Username" +msgstr "" + +#. openerp-web +#: addons/web/static/src/xml/base.xml:308 +#: addons/web/static/src/xml/base.xml:331 +msgid "Password" +msgstr "" + +#. openerp-web +#: addons/web/static/src/xml/base.xml:310 +msgid "Log in" +msgstr "" + +#. openerp-web +#: addons/web/static/src/xml/base.xml:314 +msgid "Manage Databases" +msgstr "" + +#. openerp-web +#: addons/web/static/src/xml/base.xml:44 addons/web/static/src/xml/base.xml:315 +msgid "Powered by" +msgstr "" + +#. openerp-web +#: addons/web/static/src/xml/base.xml:44 addons/web/static/src/xml/base.xml:315 +#: addons/web/static/src/xml/base.xml:1819 +msgid "OpenERP" +msgstr "" + +#. openerp-web +#: addons/web/static/src/xml/base.xml:132 +#: addons/web/static/src/xml/base.xml:328 +msgid "Drop" +msgstr "" + +#. openerp-web +#: addons/web/static/src/xml/base.xml:166 +#: addons/web/static/src/xml/base.xml:329 +msgid "Backup" +msgstr "" + +#. openerp-web +#: addons/web/static/src/xml/base.xml:195 +#: addons/web/static/src/xml/base.xml:330 +msgid "Restore" +msgstr "" + +#. openerp-web +#: addons/web/static/src/xml/base.xml:332 +msgid "Back to Login" +msgstr "" + +#. openerp-web +#: addons/web/static/src/xml/base.xml:61 +msgid "CREATE DATABASE" +msgstr "" + +#. openerp-web +#: addons/web/static/src/xml/base.xml:68 addons/web/static/src/xml/base.xml:211 +msgid "Master password:" +msgstr "" + +#. openerp-web +#: addons/web/static/src/xml/base.xml:72 addons/web/static/src/xml/base.xml:191 +msgid "New database name:" +msgstr "" + +#. openerp-web +#: addons/web/static/src/xml/base.xml:77 +msgid "Load Demonstration data:" +msgstr "" + +#. openerp-web +#: addons/web/static/src/xml/base.xml:81 +msgid "Default language:" +msgstr "" + +#. openerp-web +#: addons/web/static/src/xml/base.xml:91 +msgid "Admin password:" +msgstr "" + +#. openerp-web +#: addons/web/static/src/xml/base.xml:95 +msgid "Confirm password:" +msgstr "" + +#. openerp-web +#: addons/web/static/src/xml/base.xml:109 +msgid "DROP DATABASE" +msgstr "" + +#. openerp-web +#: addons/web/static/src/xml/base.xml:128 +#: addons/web/static/src/xml/base.xml:162 +#: addons/web/static/src/xml/base.xml:187 +msgid "Master Password:" +msgstr "" + +#. openerp-web +#: addons/web/static/src/xml/base.xml:143 +msgid "BACKUP DATABASE" +msgstr "" + +#. openerp-web +#: addons/web/static/src/xml/base.xml:175 +msgid "RESTORE DATABASE" +msgstr "" + +#. openerp-web +#: addons/web/static/src/xml/base.xml:182 +msgid "File:" +msgstr "" + +#. openerp-web +#: addons/web/static/src/xml/base.xml:204 +msgid "CHANGE MASTER PASSWORD" +msgstr "" + +#. openerp-web +#: addons/web/static/src/xml/base.xml:216 +msgid "New master password:" +msgstr "" + +#. openerp-web +#: addons/web/static/src/xml/base.xml:221 +msgid "Confirm new master password:" +msgstr "" + +#. openerp-web +#: addons/web/static/src/xml/base.xml:325 +msgid "About OpenERP" +msgstr "" + +#. openerp-web +#: addons/web/static/src/xml/base.xml:327 +msgid "Log out" +msgstr "" + +#. openerp-web +#: addons/web/static/src/xml/base.xml:333 +msgid "Activate the developer mode" +msgstr "" + +#. openerp-web +#: addons/web/static/src/xml/base.xml:1820 +msgid "Version" +msgstr "" + +#. openerp-web +#: addons/web/static/src/xml/base.xml:1821 +msgid "Copyright © 2004-TODAY OpenERP SA. All Rights Reserved." +msgstr "" + +#. openerp-web +#: addons/web/static/src/xml/base.xml:1822 +msgid "OpenERP is a trademark of the" +msgstr "" + +#. openerp-web +#: addons/web/static/src/xml/base.xml:1823 +msgid "OpenERP SA Company" +msgstr "" + +#. openerp-web +#: addons/web/static/src/xml/base.xml:1825 +msgid "Licenced under the terms of" +msgstr "" + +#. openerp-web +#: addons/web/static/src/xml/base.xml:1826 +msgid "GNU Affero General Public License" +msgstr "" + +#. openerp-web +#: addons/web/static/src/xml/base.xml:1828 +msgid "For more information visit" +msgstr "" + +#. openerp-web +#: addons/web/static/src/xml/base.xml:1829 +msgid "OpenERP.com" +msgstr "" + +#. openerp-web +#: addons/web/static/src/xml/base.xml:1720 +msgid "Old Password:" +msgstr "" + +#. openerp-web +#: addons/web/static/src/xml/base.xml:1725 +msgid "New Password:" +msgstr "" + +#. openerp-web +#: addons/web/static/src/xml/base.xml:1730 +msgid "Confirm Password:" +msgstr "" + +#. openerp-web +#: addons/web/static/src/xml/base.xml:390 +msgid "Open" +msgstr "" + +#. openerp-web +#: addons/web/static/src/xml/base.xml:390 +msgid "ERP" +msgstr "" + +#. openerp-web +#: addons/web/static/src/xml/base.xml:477 +msgid "Debug View#" +msgstr "" + +#. openerp-web +#: addons/web/static/src/xml/base.xml:478 +msgid "View Log (perm_read)" +msgstr "" + +#. openerp-web +#: addons/web/static/src/xml/base.xml:450 +msgid "Toggle Form Layout Outline" +msgstr "" + +#. openerp-web +#: addons/web/static/src/xml/base.xml:479 +msgid "View Fields" +msgstr "" + +#. openerp-web +#: addons/web/static/src/xml/base.xml:1300 +msgid "Manage Filters" +msgstr "" + +#. openerp-web +#: addons/web/static/src/xml/base.xml:483 +msgid "View" +msgstr "" + +#. openerp-web +#: addons/web/static/src/xml/base.xml:484 +msgid "Edit SearchView" +msgstr "" + +#. openerp-web +#: addons/web/static/src/xml/base.xml:485 +msgid "Edit Action" +msgstr "" + +#. openerp-web +#: addons/web/static/src/xml/base.xml:486 +msgid "Edit Workflow" +msgstr "" + +#. openerp-web +#: addons/web/static/src/xml/base.xml:491 +msgid "ID:" +msgstr "" + +#. openerp-web +#: addons/web/static/src/xml/base.xml:494 +msgid "XML ID:" +msgstr "" + +#. openerp-web +#: addons/web/static/src/xml/base.xml:497 +msgid "Creation User:" +msgstr "" + +#. openerp-web +#: addons/web/static/src/xml/base.xml:500 +msgid "Creation Date:" +msgstr "" + +#. openerp-web +#: addons/web/static/src/xml/base.xml:503 +msgid "Latest Modification by:" +msgstr "" + +#. openerp-web +#: addons/web/static/src/xml/base.xml:506 +msgid "Latest Modification Date:" +msgstr "" + +#. openerp-web +#: addons/web/static/src/xml/base.xml:518 +msgid "Delete this attachment" +msgstr "" + +#. openerp-web +#: addons/web/static/src/xml/base.xml:523 +msgid "/web/binary/upload_attachment" +msgstr "" + +#. openerp-web +#: addons/web/static/src/xml/base.xml:527 +msgid "Add..." +msgstr "" + +#. openerp-web +#: addons/web/static/src/xml/base.xml:622 +#: addons/web/static/src/xml/base.xml:687 +msgid "or" +msgstr "" + +#. openerp-web +#: addons/web/static/src/xml/base.xml:687 +msgid "Discard" +msgstr "" + +#. openerp-web +#: addons/web/static/src/xml/base.xml:806 +msgid "Default:" +msgstr "" + +#. openerp-web +#: addons/web/static/src/xml/base.xml:823 +msgid "Condition:" +msgstr "" + +#. openerp-web +#: addons/web/static/src/xml/base.xml:842 +msgid "Only you" +msgstr "" + +#. openerp-web +#: addons/web/static/src/xml/base.xml:849 +msgid "All users" +msgstr "" + +#. openerp-web +#: addons/web/static/src/xml/base.xml:856 +msgid "Unhandled widget" +msgstr "" + +#. openerp-web +#: addons/web/static/src/xml/base.xml:936 +msgid "(nolabel)" +msgstr "" + +#. openerp-web +#: addons/web/static/src/xml/base.xml:941 +msgid "Field:" +msgstr "" + +#. openerp-web +#: addons/web/static/src/xml/base.xml:945 +msgid "Object:" +msgstr "" + +#. openerp-web +#: addons/web/static/src/xml/base.xml:949 +msgid "Type:" +msgstr "" + +#. openerp-web +#: addons/web/static/src/xml/base.xml:953 +msgid "Widget:" +msgstr "" + +#. openerp-web +#: addons/web/static/src/xml/base.xml:957 +msgid "Size:" +msgstr "" + +#. openerp-web +#: addons/web/static/src/xml/base.xml:961 +msgid "Context:" +msgstr "" + +#. openerp-web +#: addons/web/static/src/xml/base.xml:965 +msgid "Domain:" +msgstr "" + +#. openerp-web +#: addons/web/static/src/xml/base.xml:910 +#: addons/web/static/src/xml/base.xml:969 +msgid "Modifiers:" +msgstr "" + +#. openerp-web +#: addons/web/static/src/xml/base.xml:973 +msgid "Change default:" +msgstr "" + +#. openerp-web +#: addons/web/static/src/xml/base.xml:977 +msgid "On change:" +msgstr "" + +#. openerp-web +#: addons/web/static/src/xml/base.xml:981 +msgid "Relation:" +msgstr "" + +#. openerp-web +#: addons/web/static/src/xml/base.xml:985 +msgid "Selection:" +msgstr "" + +#. openerp-web +#: addons/web/static/src/xml/base.xml:1040 +msgid "Open this resource" +msgstr "" + +#. openerp-web +#: addons/web/static/src/xml/base.xml:1063 +msgid "Select date" +msgstr "" + +#. openerp-web +#: addons/web/static/src/xml/base.xml:948 +msgid "Open Resource" +msgstr "" + +#. openerp-web +#: addons/web/static/src/xml/base.xml:1162 +#: addons/web/static/src/xml/base.xml:1205 +msgid "Set Image" +msgstr "" + +#. openerp-web +#: addons/web/static/src/js/view_form.js:1620 +#: addons/web/static/src/xml/base.xml:1170 +#: addons/web/static/src/xml/base.xml:1220 +#: addons/web/static/src/xml/base.xml:1222 +#: addons/web/static/src/xml/base.xml:1279 +msgid "Clear" +msgstr "" + +#. openerp-web +#: addons/web/static/src/xml/base.xml:1179 +#: addons/web/static/src/xml/base.xml:1230 +msgid "Uploading ..." +msgstr "" + +#. openerp-web +#: addons/web/static/src/xml/base.xml:1066 +msgid "width: 83px;" +msgstr "" + +#. openerp-web +#: addons/web/static/src/xml/base.xml:1207 +#: addons/web/static/src/xml/base.xml:1501 +msgid "Select" +msgstr "" + +#. openerp-web +#: addons/web/static/src/xml/base.xml:1214 +#: addons/web/static/src/xml/base.xml:1216 +msgid "Save As" +msgstr "" + +#. openerp-web +#: addons/web/static/src/xml/base.xml:1245 +msgid "Button" +msgstr "" + +#. openerp-web +#: addons/web/static/src/xml/base.xml:1248 +msgid "(no string)" +msgstr "" + +#. openerp-web +#: addons/web/static/src/xml/base.xml:1255 +msgid "Special:" +msgstr "" + +#. openerp-web +#: addons/web/static/src/xml/base.xml:1260 +msgid "Button Type:" +msgstr "" + +#. openerp-web +#: addons/web/static/src/xml/base.xml:1264 +msgid "Method:" +msgstr "" + +#. openerp-web +#: addons/web/static/src/xml/base.xml:1268 +msgid "Action ID:" +msgstr "" + +#. openerp-web +#: addons/web/static/src/xml/base.xml:542 +msgid "Field" +msgstr "" + +#. openerp-web +#: addons/web/static/src/xml/base.xml:1205 +msgid "Advanced Search..." +msgstr "" + +#. openerp-web +#: addons/web/static/src/xml/base.xml:1287 +msgid "-- Filters --" +msgstr "" + +#. openerp-web +#: addons/web/static/src/xml/base.xml:1296 +msgid "-- Actions --" +msgstr "" + +#. openerp-web +#: addons/web/static/src/xml/base.xml:1297 +msgid "Add Advanced Filter" +msgstr "" + +#. openerp-web +#: addons/web/static/src/xml/base.xml:1298 +msgid "Save Filter" +msgstr "" + +#. openerp-web +#: addons/web/static/src/xml/base.xml:1305 +msgid "Filter Name:" +msgstr "" + +#. openerp-web +#: addons/web/static/src/xml/base.xml:1307 +msgid "(Any existing filter with the same name will be replaced)" +msgstr "" + +#. openerp-web +#: addons/web/static/src/xml/base.xml:1376 +msgid "Custom Filters" +msgstr "" + +#. openerp-web +#: addons/web/static/src/xml/base.xml:1379 +msgid "Save current filter" +msgstr "" + +#. openerp-web +#: addons/web/static/src/xml/base.xml:1381 +msgid "Filter name" +msgstr "" + +#. openerp-web +#: addons/web/static/src/xml/base.xml:1383 +msgid "Share with all users" +msgstr "" + +#. openerp-web +#: addons/web/static/src/js/search.js:298 +#: addons/web/static/src/xml/base.xml:1299 +msgid "Add to Dashboard" +msgstr "" + +#. openerp-web +#: addons/web/static/src/xml/base.xml:1394 +msgid "Title of new Dashboard item" +msgstr "" + +#. openerp-web +#: addons/web/static/src/xml/base.xml:1395 +msgid "save" +msgstr "" + +#. openerp-web +#: addons/web/static/src/xml/base.xml:1399 +msgid "Select Dashboard to add this filter to" +msgstr "" + +#. openerp-web +#: addons/web/static/src/xml/base.xml:1406 +msgid "Advanced Search" +msgstr "" + +#. openerp-web +#: addons/web/static/src/xml/base.xml:1411 +msgid "Add a condition" +msgstr "" + +#. openerp-web +#: addons/web/static/src/xml/base.xml:1412 +msgid "Apply" +msgstr "" + +#. openerp-web +#: addons/web/static/src/xml/base.xml:1509 +msgid "Save & New" +msgstr "" + +#. openerp-web +#: addons/web/static/src/xml/base.xml:1510 +msgid "Save & Close" +msgstr "" + +#. openerp-web +#: addons/web/static/src/xml/base.xml:1617 +msgid "" +"This wizard will export all data that matches the current search criteria to " +"a CSV file.\n" +" You can export all data or only the fields that can be " +"reimported after modification." +msgstr "" + +#. openerp-web +#: addons/web/static/src/xml/base.xml:1624 +msgid "Export Type:" +msgstr "" + +#. openerp-web +#: addons/web/static/src/xml/base.xml:1626 +msgid "Import Compatible Export" +msgstr "" + +#. openerp-web +#: addons/web/static/src/xml/base.xml:1627 +msgid "Export all Data" +msgstr "" + +#. openerp-web +#: addons/web/static/src/xml/base.xml:1630 +msgid "Export Formats" +msgstr "" + +#. openerp-web +#: addons/web/static/src/xml/base.xml:1636 +msgid "Available fields" +msgstr "" + +#. openerp-web +#: addons/web/static/src/xml/base.xml:1638 +msgid "Fields to export" +msgstr "" + +#. openerp-web +#: addons/web/static/src/xml/base.xml:1640 +msgid "Save fields list" +msgstr "" + +#. openerp-web +#: addons/web/static/src/xml/base.xml:1654 +msgid "Remove All" +msgstr "" + +#. openerp-web +#: addons/web/static/src/xml/base.xml:1666 +msgid "Name" +msgstr "" + +#. openerp-web +#: addons/web/static/src/xml/base.xml:1699 +msgid "Save as:" +msgstr "" + +#. openerp-web +#: addons/web/static/src/xml/base.xml:1706 +msgid "Saved exports:" +msgstr "" + +#. openerp-web +#: addons/web/static/src/xml/base.xml:1748 +msgid "1. Import a .CSV file" +msgstr "" + +#. openerp-web +#: addons/web/static/src/xml/base.xml:1749 +msgid "" +"Select a .CSV file to import. If you need a sample of file to import,\n" +" you should use the export tool with the \"Import Compatible\" option." +msgstr "" + +#. openerp-web +#: addons/web/static/src/xml/base.xml:1753 +msgid "CSV File:" +msgstr "" + +#. openerp-web +#: addons/web/static/src/xml/base.xml:1756 +msgid "2. Check your file format" +msgstr "" + +#. openerp-web +#: addons/web/static/src/xml/base.xml:1759 +msgid "Import Options" +msgstr "" + +#. openerp-web +#: addons/web/static/src/xml/base.xml:1763 +msgid "Does your file have titles?" +msgstr "" + +#. openerp-web +#: addons/web/static/src/xml/base.xml:1769 +msgid "Separator:" +msgstr "" + +#. openerp-web +#: addons/web/static/src/xml/base.xml:1771 +msgid "Delimiter:" +msgstr "" + +#. openerp-web +#: addons/web/static/src/xml/base.xml:1775 +msgid "Encoding:" +msgstr "" + +#. openerp-web +#: addons/web/static/src/xml/base.xml:1778 +msgid "UTF-8" +msgstr "" + +#. openerp-web +#: addons/web/static/src/xml/base.xml:1779 +msgid "Latin 1" +msgstr "" + +#. openerp-web +#: addons/web/static/src/xml/base.xml:1782 +msgid "Lines to skip" +msgstr "" + +#. openerp-web +#: addons/web/static/src/xml/base.xml:1782 +msgid "" +"For use if CSV files have titles on multiple lines, skips more than a single " +"line during import" +msgstr "" + +#. openerp-web +#: addons/web/static/src/xml/base.xml:1713 +msgid "--- Don't Import ---" +msgstr "" + +#. openerp-web +#: addons/web/static/src/xml/base.xml:1809 +msgid "The import failed due to:" +msgstr "" + +#. openerp-web +#: addons/web/static/src/xml/base.xml:1811 +msgid "Here is a preview of the file we could not import:" +msgstr "" diff --git a/addons/web_process/i18n/nb.po b/addons/web_process/i18n/nb.po index 021bbfbf3f4..977d690db7d 100644 --- a/addons/web_process/i18n/nb.po +++ b/addons/web_process/i18n/nb.po @@ -8,14 +8,14 @@ msgstr "" "Project-Id-Version: openerp-web\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2012-07-02 09:06+0200\n" -"PO-Revision-Date: 2012-03-29 11:39+0000\n" -"Last-Translator: FULL NAME \n" +"PO-Revision-Date: 2012-07-24 06:25+0000\n" +"Last-Translator: Tor Syversen \n" "Language-Team: Norwegian Bokmal \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2012-07-03 05:55+0000\n" -"X-Generator: Launchpad (build 15531)\n" +"X-Launchpad-Export-Date: 2012-07-25 04:52+0000\n" +"X-Generator: Launchpad (build 15679)\n" #. openerp-web #: addons/web_process/static/src/js/process.js:261 @@ -85,12 +85,12 @@ msgstr "Notater:" #. openerp-web #: addons/web_process/static/src/xml/web_process.xml:59 msgid "Last modified by:" -msgstr "" +msgstr "Sist revidert av:" #. openerp-web #: addons/web_process/static/src/xml/web_process.xml:59 msgid "N/A" -msgstr "" +msgstr "N/A" #. openerp-web #: addons/web_process/static/src/xml/web_process.xml:62 @@ -105,7 +105,7 @@ msgstr "" #. openerp-web #: addons/web_process/static/src/xml/web_process.xml:88 msgid "Select Process" -msgstr "" +msgstr "Velg prosess" #. openerp-web #: addons/web_process/static/src/xml/web_process.xml:98 @@ -115,4 +115,4 @@ msgstr "Velg" #. openerp-web #: addons/web_process/static/src/xml/web_process.xml:109 msgid "Edit Process" -msgstr "" +msgstr "Rediger prosess" From eaf335c7c04261c9824b73f31c6c73a3b5f1d165 Mon Sep 17 00:00:00 2001 From: Raphael Collet Date: Wed, 25 Jul 2012 09:13:03 +0200 Subject: [PATCH 287/349] [FIX] account: remove duplicate field in customer invoice form bzr revid: rco@openerp.com-20120725071303-hjfthae6g60cqwv1 --- addons/account/account_invoice_view.xml | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/addons/account/account_invoice_view.xml b/addons/account/account_invoice_view.xml index 2d95f8e8513..393c468c952 100644 --- a/addons/account/account_invoice_view.xml +++ b/addons/account/account_invoice_view.xml @@ -347,14 +347,12 @@ - + - From a4f1ce69ab01818fce1a23fc3744865bcc4fd85c Mon Sep 17 00:00:00 2001 From: Antony Lesuisse Date: Wed, 25 Jul 2012 10:04:39 +0200 Subject: [PATCH 288/349] [FIX] throbber use an image. fva will fix the aliasing. Also check http://commons.wikimedia.org/wiki/Category:Throbbers bzr revid: al@openerp.com-20120725080439-j7f44tb0fbp90cm0 --- addons/web/__openerp__.py | 1 - addons/web/static/src/img/throbber.gif | Bin 673 -> 7625 bytes addons/web/static/src/js/coresetup.js | 28 ++----------------------- 3 files changed, 2 insertions(+), 27 deletions(-) diff --git a/addons/web/__openerp__.py b/addons/web/__openerp__.py index 4051e607e21..9e8e258dedc 100644 --- a/addons/web/__openerp__.py +++ b/addons/web/__openerp__.py @@ -20,7 +20,6 @@ "static/lib/jquery.form/jquery.form.js", "static/lib/jquery.validate/jquery.validate.js", "static/lib/jquery.ba-bbq/jquery.ba-bbq.js", - "static/lib/spinjs/spin.js", "static/lib/jquery.blockUI/jquery.blockUI.js", "static/lib/jquery.ui/js/jquery-ui-1.8.17.custom.min.js", "static/lib/jquery.ui.timepicker/js/jquery-ui-timepicker-addon.js", diff --git a/addons/web/static/src/img/throbber.gif b/addons/web/static/src/img/throbber.gif index ded8d36d48686558e7fd498eff3b6cc47b8a648a..7ab8346ce0957a729a712adc2a61a97166f4252c 100644 GIT binary patch literal 7625 zcmeHM`&(1jw%vJ$B!=(`8;qFnGSC2liZ}F7PZ9{GfogcwK(S^cwutsNqPF;Go1GT{ zf<{1$)uSPVHXzm*v0_^_4?uhz4_LJHJla5!QhQn{wJr7Ze!VN{cfWIgz<=O=ckZ<} z{5a=WV~#cE%DU$Y1UX0~6bb!|K*1nG!G{dKWHJLR5HNTGpFnV6PGEsZNdYhTrle%1 zWP->EteilI!4d~Qfxj}a0#PC>2}EUJRaOSy$}N>!0&C0mE!zXJEARwk|E~S}gD?1_ z(}5R!17R|O7ko{oj=<^&#))9`^qe@+)6;Y23|MC_1lEOMT)uqa0(dW9zC1Dl*2u_h z@QmCJ#J$`1?%n&JKj7bcp9h{`d=-p`!T9+hcz*u*x8HvI9i#vM{+~pE^BZ-&q^vYg zB$s5R^KlqZBGAmN4SctUZue1$RrRQK3G3 zNPIEJ*ODq{v9fgCp_=GoE4O&e7}gfLv6C#4H-#s}_;iyw=8*OzS^YlvfylZcIfqcM zNS$x`#Ex{7etUE*d=F|EutV+?D-mOFSHb4WxI zpVT=SGusqM-2lfBD+a1^F+4=efXu=;;( z!oLf6KTrTXL<)_|siRd1RHJ4MIpU7dBex!o4@Kc37*{|w6n0dxT+RX$GqsFX<1Kk^ z7)_O18H+O^?MHE2Z})qD2w9INX*wPC_iy|~&k-vt_LV8`Fe(OWx5bWV%X`aws>vHY z-yH3ZPFGGc4271ne@xLuE#9YEQUytJtCL}30zU9|`yox0p&$_=%l$$N0a=ta>;=2w zZH%6O_VJ_|8KU8^OYOnCff59XQpU>MdQifc@v!EPj9Evqw#%I)i;L}0XbWhD=Plgp zgQ{v1GmW^m;`)$H2&a`f07sf5K?(1YwLPyyoxm28CF2p)F*K>IE?7c% zZ=8#c-_@br7>Zm`Pf;ELLRIaGbU!zxc~KJy=_)>wYjhvbs1Wz}%vrii-_*YbUsV$d zYxnux8iFQfY5JTAq+VNNG_%(p2%z88rV%j~#twtjlZ)cSk30$MT4QOaa*?*3$hFwa zYFfW{p-F;fRS(p17}UzZsW5{@zBhr8h<^iYIHM1X0X-RqL23C5C;PADBEZXU^ z!_z8cn3Y{e8}hntNYFK)NjUNrCNEGyZ<6WHC$KM)U-k5G$I#TaxUI(cqUH?wQG-Yn zWh(DYav2cYw0oSvk#>-MQ;@nl&Z}dP1BvJ4sOHTturY%#MVAb!MCm@zyIcj}zmC6u z*S<|cfe9bdgl47xx>zk-lK+lC{-ZTOPVx-2szH!{GN}R^U9-|N!#4f?mR-D{2bO45TQP0 z$(Pu&NJRz-ECqf~Ao)cdz`Vc&z-JU5Sw#q=$As&;ggpAnxYgoJW2m8W zK-upy+d^0766-$;FKCgV++8z_(Vp3xXx4V!FAF_4|BPm99?bl*OKIv>wlSk%-*5|) z#pEsX*(6j*@m}8~MG2sm6dTLKX1}=;o+Rhx&Oe<`9>9gN6i&BCOlRc|Uf|w+A5V$q z&-^&=dLI|^c1D%^#Yd`XDs$ZsiQKMF)5@-a9sT$Jz$+uM0gbH__aNf5Orq-gUEtyVNlcb}3uCp*H3UfwrIo zD)bFmDy?-BOvRb>a?b_58%Juk3A?7ZPZIv4umk>xaRz6I%hkzmssOvg6Xk<$RQq>E z`WG_t`Tx*v4wd})-7=r&32X@hZtRgASyf~KfCmUn2+Jz225F}w12s*fH6gO)<0a1K$Yz;|kH;m` zq76}p;FzrW>(|?&ef_kEe0C!vdkcl;eVV2|McVz{BT?C$Bu+}@W~Zva$%oMKTk8^v z=)I+__aDiTGDB2_wRgaISpN>BLi_QY-lr z`$3n6a=eTGb^Hgc!N(Ev3O>ZRW}cvvLBhj^7G|2l$*6*fw~lHMMm4Aav2d1gWcJA# z1VhPjt2qkE4bT)stfInQ4JXSw;4p=?rx4A0<<7v@cSg;pNSe=Cuze2g!fSseyR0d9 z_-k$H4XNhFa+2ck?BqLJth%mjFQr4+sVRgrYbRhS>eW+OWSe~4CNb$>1A@u0La5 zAgg;Tr}L@uldEGC)+DF}dy0>^^8F~EprqH>@}INdgs(lIbpvC>rx?;#XVr{q-jji? zh_|C!2Uc6V#~pS0(AiM0)NJi&tXNr{B$vOF&`3ukr(YUN=`Ltx;WDZw-5#GfDy@3R zft)+r$Vl>9Ar|~DGQ?$GtnFHjpN?orTl$a<9#H|r`Beh}=pj-vG0ZTo(IYSxqC1Qh zbM+BDLHu%}Gz>#|;{iqgB zkaQY$`ga@4Lll1^e)i50?}n91Ezp7~?}oVC1LTk0o!Y|XIj_&NM^T{l_!oy9#R=EM zA0grnAu85?ewq2O4Q7p~OzzbY`^*^6n#3Fy2!8&sgG!ObK)Jem$|boeB+Q_j53j$?sy#1@q6prgKl(+dDel6a z;$9A5o-Fs(`2A%~ZAmQGJ_fKsclmK%%8HU9qcD^s?y$rpj+!~RyPd)=F+z`9``7dn zg%>3ze)e~d=RIxjQ?5RZedy;5=r_lrtCptw?{r}op?s(^(6Sy>L&DH7KLENAs9s?{ zS6@A>r^7tCTxDICUPY7vzd!BnsKm<@U)OhaS|Yhc){0UfwF>V{|0PE45vsI_-tXf&4)|ZC!0cfQb)qipyN45G9kl$g0!a&u*WzOUQN$m;v3+vV z<0IYRFdvRM!jjh^mnGY0RR7dIp-qFM;2`@J21lR(+{aKYfe@OASE;*%A#`6pj{&Li z3A7Zc+PsquLEHg#g;Zphpyi+?;^(~tN(Sl9O!&(<;_)29TT|i=?YNbCq4s-sWUsKN zLM+`AOKiE@TXwdpx5TzR#J-`=xJ+x~l_YOCN#>o7cZ4UaNWd+`7qsg0n&D!X4xz%Y z@0y>-BuZa0Gq;R64(B;TeR<}r*-U})3H=(h2y;pgz#VX&%Q0#BRBs{=Qg#U`%T^ZT z%GK2<@TqIc7Q-Mt2bbZnD~pvV3vrWY+*9J4sM38P5%!dB8D4H~eb?0D13oh}Ov{cej&zy z%@B0>*)*}9Kvqu7sk(--5Ro?HMtlSl76bYD`BqXWOSxt>Ho3@nJZ?8-1`AFLhE!k8 z^OSupPp?{URXy&YHlHrLP+RUP*O%}r25Le+vGw11O5r5)mggC6uPUFWo5H#a=yB8| zd}LuJ#25Se-bFI#h_K7gD`&?z0`iovu;Vezv-3yPOHLv|__-p0K9vayn8)gYLrBea zJ2`rA=B5JPLwR&ox}ZjS4nonmTy;O!Da1e!-a!5my)T4F0$qwIeyHd;LU$-#=kr6X zI1g9iiR^V}$V+visoh=8r^_$ZzUsL^C`qgI>RLt26s8k<{hkv!PwBjf+deVs@m&)q zZ?Kp3dimE5ekd{kBH`lv_lJuy%Y_g4hQBau}4ey@{|HI zt`U?IU&a3($_tGXCukzN1&&g?K?^0E!(y_>J-dOa5mchV~^&W>hwv{ay5_AXj`lWsB7ad#h+vucnio?>8N zli=w4VM#?N%PzGHC;fx-HjbKp>l5j;J8J1M${ILgM>)3$l*q(@=4eUu7+?+N)Lm`{ zC$3)bJDuQ8?%{EqubD#va|9Tp%p^Lw?A)FEZVUEB$KV}f4l9Rq1c86qevz0YcEUwC#>a0 zcVDPYX{T)q8)@8V+w4|{%_T_9oM*2(Ry4eB3`?S3&`o*ogQR7h{JkZFLgu9^#g(nD ziy6$c`u*XvfBUprxMY6@84i2%Nc3nRj|yA9D3qK5Zm;C*WHN#6XARVbEVNGq$l zC2%HyE+CGm$8FQX5C%)YkR}w+g13C0^ThS&)6u+9(W9?~T}Z=>AK5*H0X}#2vR!^P zX60ISQJOp3_$j9VgZIb2JZg?dFc72Ro-zDHxm+sXkEKNP9fRFyeAS333T2;aQbm1y}>FC58Ed@5RIV z%t~ecIrB7V2jV?z7|tL;BNIm>72V*jBb+!pdF;zsAxXHG{Nr^MdZ;^}kgkZGS!cH6 zLh;8aKdSF?6s?RjxzZYzAZx3SBEJyQew+X~Rt)N{N2HW9HJEm-_*4D!C(As)XYSU; zERR?Vn2bxCp;KE+skyI!abl7 zOMG1N7W?V&Zjv{S+?^j1(M|B0mYvsyw69u&iM0H|dA&V#qmwry2ImEq_OSZ8O;0__ zSDIAtn2W+p(}!v?5kIa%e8?5W(gX^gu9IR3B{E4C=-C1jIGozZQ=o`gIu+ce#+yiV z+O7%rWHm=ZXOk8t5BmW6tn|^yIW6hXQ5@(LMzZk`koScSHpd9$y-5apfw>_eEI6fl zXj>Vnlt>p$MlFWkGE2`jIHo zn$DSRK=p~hZEG9BRaq&8=32Nf1Ou=xCfp8oA(|(*^6hhfLGw~za7k>{y(hD+*)#~C z?xnjb-&~lP(-6SKHC1`vp*f2?UFNC&!HqF&2kE*P;H)5io<3wtqWvR7nGQMke_H*; zRb?H^xxeFPw7Y0`*3#eyZ$A_XBjA^WvH9}8TR?vDrunwmorD(Qey;z6zF-C$5;%&e@PwypCUg7oMnNg9Qa82 znN-g9BdO9A#yyPLrgywLX7JuEc zg)Oe&O!t{$j=D)R294;0~f~YmYr% zP1B#=&{x)*>gjudr#LBtmlOM$cHsXe0MTy~kUR7Vm%i|51}#)q0lmSAP6xmFU?8i| Xg4?%qdPUWwYT9a|!Y_kc)<66=+QS-Y literal 673 zcmZ?wbhEHb6krfw_{6~Q|NnnuW8-t@&ZVcP0~w8tjk9LWTE2X_;(u;G*N|Xm#{gF& zJp*P&1_lPje^Smxsfi`2DGKG8B^e5dS&0=n`H3ldnR#jX42nNlIJtnTbbuIWv;YGG zvoXi6JO2z$d1ebIb69am&SCePk;dt|(eThNk(md#=_MRFRCqx*TEg<~GImP|9(J$n z=N>>?FwHRmnd8@^s36_KvwOp{E|)^5z>ow(NreO-*J!B~H8NXE@4royU~f>kF7c?% zS#p!Aik1*IgUmQ~87XU@ay&8N%#<*Fw$@}BzAut~A3dECXRI!e`M`B%^In-_E3}y+ z--`cXY(C6yv@%6%{(cs0Mgjenq^f<&sBPk#Ibrdw-OD&z6?s?;UD^|61XsB=ZMZ1U zoD>xM*;d}bLPx6q#F8RQAFO^e;@DNBuI=?aMdX9TXP-tMwX(wrF-aj)T3dF?Wkfn@ zoe-L1lcsR Date: Wed, 25 Jul 2012 10:25:39 +0200 Subject: [PATCH 289/349] [FIX] account: bank statement, fixed some glitches in previous refactoring (unknown variables 'st' and 'res_currency_obj') + code optimization and refactoring bzr revid: qdp-launchpad@openerp.com-20120725082539-qqi2jrr35xgz37z5 --- addons/account/account_bank_statement.py | 75 ++++++++---------------- 1 file changed, 26 insertions(+), 49 deletions(-) diff --git a/addons/account/account_bank_statement.py b/addons/account/account_bank_statement.py index b9fbc3727a0..11bcf565260 100644 --- a/addons/account/account_bank_statement.py +++ b/addons/account/account_bank_statement.py @@ -184,15 +184,14 @@ class account_bank_statement(osv.osv): :param char st_line_number: will be used as the name of the generated account move :return: dict of value to create() the account.move """ - move_vals = { + return { 'journal_id': st_line.statement_id.journal_id.id, 'period_id': st_line.statement_id.period_id.id, 'date': st_line.date, 'name': st_line_number, 'ref': st_line.ref, } - return move_vals - + def _prepare_bank_move_line(self, cr, uid, st_line, move_id, amount, company_currency_id, context=None): """Compute the args to build the dict of values to create the bank move line from a @@ -213,17 +212,15 @@ class account_bank_statement(osv.osv): cur_id = False amt_cur = False if st_line.statement_id.currency.id <> company_currency_id: - amount_cur = res_currency_obj.compute(cr, uid, company_currency_id, - st.currency.id, amount, context=context) - amt_cur = -amount_cur + cur_id = st_line.statement_id.currency.id if st_line.account_id and st_line.account_id.currency_id and st_line.account_id.currency_id.id <> company_currency_id: cur_id = st_line.account_id.currency_id.id - amount_cur = res_currency_obj.compute(cr, uid, company_currency_id, - st_line.account_id.currency_id.id, amount, context=context) - amt_cur = -amount_cur - + if cur_id: + res_currency_obj = self.pool.get('res.currency') + amt_cur = -res_currency_obj.compute(cr, uid, company_currency_id, cur_id, amount, context=context) + res = self._prepare_move_line_vals(cr, uid, st_line, move_id, debit, credit, - amount_currency=amt_cur, currency_id=cur_id, analytic_id = anl_id, context=context) + amount_currency=amt_cur, currency_id=cur_id, analytic_id=anl_id, context=context) return res def _get_counter_part_account(sefl, cr, uid, st_line, context=None): @@ -235,12 +232,9 @@ class account_bank_statement(osv.osv): create the move from. :return: int/long of the account.account to use as counterpart """ - account_id = False if st_line.amount >= 0: - account_id = st_line.statement_id.journal_id.default_credit_account_id.id - else: - account_id = st_line.statement_id.journal_id.default_debit_account_id.id - return account_id + return st_line.statement_id.journal_id.default_credit_account_id.id + return st_line.statement_id.journal_id.default_debit_account_id.id def _get_counter_part_partner(sefl, cr, uid, st_line, context=None): """Retrieve the partner to use in the counterpart move. @@ -251,9 +245,7 @@ class account_bank_statement(osv.osv): create the move from. :return: int/long of the res.partner to use as counterpart """ - partner_id = ((st_line.partner_id) and st_line.partner_id.id) or False - return partner_id - + return st_line.partner_id and st_line.partner_id.id or False def _prepare_counterpart_move_line(self, cr, uid, st_line, move_id, amount, company_currency_id, context=None): @@ -279,11 +271,10 @@ class account_bank_statement(osv.osv): if st_line.statement_id.currency.id <> company_currency_id: amt_cur = st_line.amount cur_id = st_line.statement_id.currency.id - res = self._prepare_move_line_vals(cr, uid, st_line, move_id, debit, credit, + return self._prepare_move_line_vals(cr, uid, st_line, move_id, debit, credit, amount_currency = amt_cur, currency_id = cur_id, account_id = account_id, partner_id = partner_id, context=context) - return res - + def _prepare_move_line_vals(self, cr, uid, st_line, move_id, debit, credit, currency_id = False, amount_currency= False, account_id = False, analytic_id = False, partner_id = False, context=None): @@ -305,23 +296,10 @@ class account_bank_statement(osv.osv): :param int/long partner_id: ID of the partner to put on the move line :return: dict of value to create() the account.move.line """ - acc_id = (st_line.account_id) and st_line.account_id.id - cur_id = st_line.statement_id.currency.id - par_id = ((st_line.partner_id) and st_line.partner_id.id) or False - anl_acc_id = False - am_curr = False - amount_currency = False - if account_id: - acc_id = account_id - if currency_id: - cur_id = currency_id - if amount_currency: - am_curr = amount_currency - if analytic_id: - anl_acc_id = analytic_id - if partner_id: - par_id = partner_id - ml_val = { + acc_id = account_id or st_line.account_id.id + cur_id = currency_id or st_line.statement_id.currency.id + par_id = partner_id or (((st_line.partner_id) and st_line.partner_id.id) or False) + return { 'name': st_line.name, 'date': st_line.date, 'ref': st_line.ref, @@ -334,15 +312,14 @@ class account_bank_statement(osv.osv): 'journal_id': st_line.statement_id.journal_id.id, 'period_id': st_line.statement_id.period_id.id, 'currency_id': cur_id, - 'amount_currency': am_curr, - 'analytic_account_id': anl_acc_id, + 'amount_currency': amount_currency, + 'analytic_account_id': analytic_id, } - return ml_val def create_move_from_st_line(self, cr, uid, st_line_id, company_currency_id, st_line_number, context=None): - """Create the account move from the statement line using the _prepare_bank_move_line and - _prepare_counterpart_move_line hook methods. - :param int/long st_line: ID of the account.bank.statement.line to create the move from. + """Create the account move from the statement line. + + :param int/long st_line_id: ID of the account.bank.statement.line to create the move from. :param int/long company_currency_id: ID of the res.currency of the company :param char st_line_number: will be used as the name of the generated account move :return: ID of the account.move created @@ -373,14 +350,14 @@ class account_bank_statement(osv.osv): amount = res_currency_obj.compute(cr, uid, st.currency.id, company_currency_id, st_line.amount, context=context) - bank_move_val = self._prepare_bank_move_line(cr, uid, st_line, move_id, amount, + bank_move_vals = self._prepare_bank_move_line(cr, uid, st_line, move_id, amount, company_currency_id, context=context) - move_line_id = account_move_line_obj.create(cr, uid, bank_move_val, context=context) + move_line_id = account_move_line_obj.create(cr, uid, bank_move_vals, context=context) torec.append(move_line_id) - counterpart_move_val = self._prepare_counterpart_move_line(cr, uid, st_line, move_id, + counterpart_move_vals = self._prepare_counterpart_move_line(cr, uid, st_line, move_id, amount, company_currency_id, context=context) - account_move_line_obj.create(cr, uid, counterpart_move_val, context=context) + account_move_line_obj.create(cr, uid, counterpart_move_vals, context=context) for line in account_move_line_obj.browse(cr, uid, [x.id for x in account_move_obj.browse(cr, uid, move_id, From b0937e3e4727bdf8553257d0630f699a28cea37c Mon Sep 17 00:00:00 2001 From: Raphael Collet Date: Wed, 25 Jul 2012 11:44:50 +0200 Subject: [PATCH 290/349] [FIX] mail: the subject of notification messages is not required, but it should be allowed bzr revid: rco@openerp.com-20120725094450-qrnczd8snzjf83iw --- addons/mail/mail_thread.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/addons/mail/mail_thread.py b/addons/mail/mail_thread.py index d036150b21c..1655ab98afb 100644 --- a/addons/mail/mail_thread.py +++ b/addons/mail/mail_thread.py @@ -822,8 +822,6 @@ class mail_thread(osv.Model): def message_append_note(self, cr, uid, ids, subject=None, body=None, parent_id=False, type='notification', content_subtype='html', context=None): - if type in ['notification', 'comment']: - subject = None if content_subtype == 'html': body_html = body body_text = body From 594b4ed4af5f932414b68601c23d528e196303f3 Mon Sep 17 00:00:00 2001 From: Raphael Collet Date: Wed, 25 Jul 2012 11:46:17 +0200 Subject: [PATCH 291/349] [FIX] import xml validation: allow optional text in element bzr revid: rco@openerp.com-20120725094617-1wnle5r9blt79x4e --- openerp/import_xml.rng | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/openerp/import_xml.rng b/openerp/import_xml.rng index 13409f05aa1..bf5a9e1800e 100644 --- a/openerp/import_xml.rng +++ b/openerp/import_xml.rng @@ -19,10 +19,8 @@ - - - - + + From 187b132fc8a74dfb617af51c842e88e52701781d Mon Sep 17 00:00:00 2001 From: Raphael Collet Date: Wed, 25 Jul 2012 12:20:51 +0200 Subject: [PATCH 292/349] [IMP] crm, sale, accounting: add OpenChatter notification after module installation bzr revid: rco@openerp.com-20120725102051-0klnt7rka2xxn8i3 --- .../account_accountant_data.xml | 23 +++++----- addons/account_voucher/__openerp__.py | 4 +- .../account_voucher/account_voucher_data.xml | 19 ++++++++ addons/crm/crm_data.xml | 22 ++++++++++ addons/sale/sale_data.xml | 44 +++++++------------ 5 files changed, 72 insertions(+), 40 deletions(-) create mode 100644 addons/account_voucher/account_voucher_data.xml diff --git a/addons/account_accountant/account_accountant_data.xml b/addons/account_accountant/account_accountant_data.xml index 3d665e680c3..7724dcb6774 100644 --- a/addons/account_accountant/account_accountant_data.xml +++ b/addons/account_accountant/account_accountant_data.xml @@ -1,20 +1,23 @@ - Accounting + - - + + + + + + Module Accounting and Finance has been installed + From the top menu Accounting, manage all of your accounting: + general accounting, cost/analytic accounting, third party + accounting, taxes, budgets, customer and supplier invoices, + bank statements, reconciliation process. + + diff --git a/addons/account_voucher/__openerp__.py b/addons/account_voucher/__openerp__.py index c943724f5f2..bfb05521420 100644 --- a/addons/account_voucher/__openerp__.py +++ b/addons/account_voucher/__openerp__.py @@ -37,7 +37,9 @@ Account Voucher module includes all the basic requirements of Voucher Entries fo "website" : "http://tinyerp.com", "images" : ["images/customer_payment.jpeg","images/journal_voucher.jpeg","images/sales_receipt.jpeg","images/supplier_voucher.jpeg"], "depends" : ["account"], - "init_xml" : [], + "init_xml" : [ + 'account_voucher_data.xml', + ], "demo_xml" : [], diff --git a/addons/account_voucher/account_voucher_data.xml b/addons/account_voucher/account_voucher_data.xml new file mode 100644 index 00000000000..2183f2a1b33 --- /dev/null +++ b/addons/account_voucher/account_voucher_data.xml @@ -0,0 +1,19 @@ + + + + + + + + Module eInvoicing & Payments has been installed + From the top menu Invoicing, manage your customer and supplier + invoices. You can also manage refunds, receipts and register + payments. + + In order to manage all accounting features (journal items, + chart of accounts, etc), you should install the module + Accounting and Finance. + + + + diff --git a/addons/crm/crm_data.xml b/addons/crm/crm_data.xml index 4ca40a691f5..0abbbb84dde 100644 --- a/addons/crm/crm_data.xml +++ b/addons/crm/crm_data.xml @@ -17,5 +17,27 @@ Sales Department Sales + + + + + + Module CRM has been installed + From the top menu Sales, manage your sales pipeline: leads, + opportunities, meetings, phone calls, and customers. OpenERP + ensures that all cases are successfully tracked by all parties. + It can automatically send reminders, escalate requests, trigger + specific methods and lots of other actions based on your own + enterprise rules. + + In the Sales settings, you can configure an email gateway to + automatically create leads from messages sent on a particular + email address. + + To manage quotations and sale orders, install the module Sales + Managements. With this module, you will be able to create + quotations directly from opportunities. + + diff --git a/addons/sale/sale_data.xml b/addons/sale/sale_data.xml index 9768f606793..c93651219af 100644 --- a/addons/sale/sale_data.xml +++ b/addons/sale/sale_data.xml @@ -1,17 +1,13 @@ - + Sales Order sale.order - + @@ -26,29 +22,19 @@ - - - - - Module sale installed! - comment - text - res.users - - Welcome to OpenERP - - You can click on the top menu Sales to manage your - customers, your quotations and sales orders. - - If you need to manage your sales pipeline (leads, - opportunities, phonecalls), you can install the CRM module - from the Settings top menu. - - - - - - + + + + + Module Sales Management has been installed + From the top menu Sales, manage your customers, quotations and + sales orders. With sale orders, you can manage product + deliveries and customer invoices. + If you need to manage your sales pipeline (leads, opportunities, + phonecalls), you can install the module CRM from the top menu + Settings. + + From 7d631745970e14204b4e539c07e56a7345279768 Mon Sep 17 00:00:00 2001 From: Raphael Collet Date: Wed, 25 Jul 2012 13:28:15 +0200 Subject: [PATCH 293/349] [IMP] crm, account: improve typo in module installation notification bzr revid: rco@openerp.com-20120725112815-g2x91czrgwfjkmbc --- addons/account_voucher/account_voucher_data.xml | 2 +- addons/crm/crm_data.xml | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/addons/account_voucher/account_voucher_data.xml b/addons/account_voucher/account_voucher_data.xml index 2183f2a1b33..8f1cf30ae2f 100644 --- a/addons/account_voucher/account_voucher_data.xml +++ b/addons/account_voucher/account_voucher_data.xml @@ -12,7 +12,7 @@ In order to manage all accounting features (journal items, chart of accounts, etc), you should install the module - Accounting and Finance. + "Accounting and Finance". diff --git a/addons/crm/crm_data.xml b/addons/crm/crm_data.xml index 0abbbb84dde..88179428ab5 100644 --- a/addons/crm/crm_data.xml +++ b/addons/crm/crm_data.xml @@ -34,8 +34,8 @@ automatically create leads from messages sent on a particular email address. - To manage quotations and sale orders, install the module Sales - Managements. With this module, you will be able to create + To manage quotations and sale orders, install the module "Sales + Management". With this module, you will be able to create quotations directly from opportunities. From 495d222f4e48cb26f75701a23dc3ee758e168c99 Mon Sep 17 00:00:00 2001 From: Raphael Collet Date: Wed, 25 Jul 2012 13:29:00 +0200 Subject: [PATCH 294/349] [IMP] point_of_sale: add OpenChatter notification after module installation bzr revid: rco@openerp.com-20120725112900-bv2eixl6ojc4w28h --- addons/point_of_sale/point_of_sale_data.xml | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/addons/point_of_sale/point_of_sale_data.xml b/addons/point_of_sale/point_of_sale_data.xml index 234e61ff394..49e64569f6a 100644 --- a/addons/point_of_sale/point_of_sale_data.xml +++ b/addons/point_of_sale/point_of_sale_data.xml @@ -1,12 +1,26 @@ - - Main PoS + + + + + + + Module Point of Sale has been installed + Encode sale orders, register payments, compute money to return, + create invoices, and manage refunds of former sales through a + specific, web-based, user interface. + + Simply click on the top menu "Point of Sale" to launch its + interface. You can configure your point of sale and perform + backend operations in the menu "PoS Backend". + + From 773794a500ba9a807396f63a2aeedb4ce80937be Mon Sep 17 00:00:00 2001 From: Raphael Collet Date: Wed, 25 Jul 2012 13:39:30 +0200 Subject: [PATCH 295/349] [IMP] project*: add OpenChatter notification after module installation bzr revid: rco@openerp.com-20120725113930-7ve3hz98i6ieuvmy --- addons/project/project_data.xml | 16 ++++++++++++++++ addons/project_gtd/project_gtd_data.xml | 14 ++++++++++++++ addons/project_issue/project_issue_data.xml | 14 ++++++++++++++ 3 files changed, 44 insertions(+) diff --git a/addons/project/project_data.xml b/addons/project/project_data.xml index 4c95373d91f..966b1c49f74 100644 --- a/addons/project/project_data.xml +++ b/addons/project/project_data.xml @@ -59,5 +59,21 @@ + + + + + + Module Project Management has been installed + Manage multi-level projects and tasks. You can delegate tasks, + track the work done on tasks, and review your planning based on + the entered data. + + You can manage todo lists on tasks by installing the module + "Todo Lists", which supports the methodology Getting Things + Done (GTD). You can also manage issues/bugs in projects by + installing the module "Issues Tracker." + + diff --git a/addons/project_gtd/project_gtd_data.xml b/addons/project_gtd/project_gtd_data.xml index 7d495023f87..38cc247fc32 100644 --- a/addons/project_gtd/project_gtd_data.xml +++ b/addons/project_gtd/project_gtd_data.xml @@ -22,6 +22,20 @@ Long Term terp-project + + + + + + + Module Todo Lists has been installed + + Add todo items on project tasks, to help you organize your work. + This module supports the methodology Getting Things Done (GTD), + created by David Allen, and described in the book of the same + name. + + diff --git a/addons/project_issue/project_issue_data.xml b/addons/project_issue/project_issue_data.xml index 34fea22f9b9..add2ce99c19 100644 --- a/addons/project_issue/project_issue_data.xml +++ b/addons/project_issue/project_issue_data.xml @@ -31,5 +31,19 @@ v3.0 + + + + + Module Issues Tracker has been installed + Manage the issues you might face in a project, like bugs in a + system, client complaints or material breakdowns. You can + record issues, assign them to some responsible person, and keep + track of their status as they evolve over time. + + You can access issues from the top menu Project, and access the + issues of a specific project from the projects gallery view. + + From 175d5ff509e66d9d9014a19a6a4493c4a8d1d182 Mon Sep 17 00:00:00 2001 From: niv-openerp Date: Wed, 25 Jul 2012 14:35:43 +0200 Subject: [PATCH 296/349] [IMP] added option "no_open" in m2o bzr revid: nicolas.vanhoren@openerp.com-20120725123543-fzzefu57lwy5xksd --- addons/web/static/src/js/view_form.js | 7 ++++--- addons/web/static/src/xml/base.xml | 6 ++++-- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/addons/web/static/src/js/view_form.js b/addons/web/static/src/js/view_form.js index 835527b3135..f8f09ae2762 100644 --- a/addons/web/static/src/js/view_form.js +++ b/addons/web/static/src/js/view_form.js @@ -2818,10 +2818,11 @@ instance.web.form.FieldMany2One = instance.web.form.AbstractField.extend(instanc if (follow) link += "
"; } - this.$element.find('a') + var $link = this.$element.find('.oe_form_uri') .unbind('click') - .html(link) - .click(function () { + .html(link); + if (! this.get_definition_options().no_open) + $link.click(function () { self.do_action({ type: 'ir.actions.act_window', res_model: self.field.relation, diff --git a/addons/web/static/src/xml/base.xml b/addons/web/static/src/xml/base.xml index 5d55a0ece15..4ce36fe86d4 100644 --- a/addons/web/static/src/xml/base.xml +++ b/addons/web/static/src/xml/base.xml @@ -955,11 +955,13 @@ - + + - / + /
Date: Wed, 25 Jul 2012 14:36:34 +0200 Subject: [PATCH 297/349] [FIX] forgot to add spin.js bzr revid: nicolas.vanhoren@openerp.com-20120725123634-y3qy8epzkps3gxi6 --- addons/web/static/lib/spinjs/spin.js | 306 +++++++++++++++++++++++++++ 1 file changed, 306 insertions(+) create mode 100644 addons/web/static/lib/spinjs/spin.js diff --git a/addons/web/static/lib/spinjs/spin.js b/addons/web/static/lib/spinjs/spin.js new file mode 100644 index 00000000000..d8e21786a1f --- /dev/null +++ b/addons/web/static/lib/spinjs/spin.js @@ -0,0 +1,306 @@ +//fgnass.github.com/spin.js#v1.2.5 +(function(window, document, undefined) { + +/** + * Copyright (c) 2011 Felix Gnass [fgnass at neteye dot de] + * Licensed under the MIT license + */ + + var prefixes = ['webkit', 'Moz', 'ms', 'O']; /* Vendor prefixes */ + var animations = {}; /* Animation rules keyed by their name */ + var useCssAnimations; + + /** + * Utility function to create elements. If no tag name is given, + * a DIV is created. Optionally properties can be passed. + */ + function createEl(tag, prop) { + var el = document.createElement(tag || 'div'); + var n; + + for(n in prop) { + el[n] = prop[n]; + } + return el; + } + + /** + * Appends children and returns the parent. + */ + function ins(parent /* child1, child2, ...*/) { + for (var i=1, n=arguments.length; i> 1) : o.left+mid) + 'px', + top: (o.top == 'auto' ? tp.y-ep.y + (target.offsetHeight >> 1) : o.top+mid) + 'px' + }); + } + + el.setAttribute('aria-role', 'progressbar'); + self.lines(el, self.opts); + + if (!useCssAnimations) { + // No CSS animation support, use setTimeout() instead + var i = 0; + var fps = o.fps; + var f = fps/o.speed; + var ostep = (1-o.opacity)/(f*o.trail / 100); + var astep = f/o.lines; + + !function anim() { + i++; + for (var s=o.lines; s; s--) { + var alpha = Math.max(1-(i+s*astep)%f * ostep, o.opacity); + self.opacity(el, o.lines-s, alpha, o); + } + self.timeout = self.el && setTimeout(anim, ~~(1000/fps)); + }(); + } + return self; + }, + stop: function() { + var el = this.el; + if (el) { + clearTimeout(this.timeout); + if (el.parentNode) el.parentNode.removeChild(el); + this.el = undefined; + } + return this; + }, + lines: function(el, o) { + var i = 0; + var seg; + + function fill(color, shadow) { + return css(createEl(), { + position: 'absolute', + width: (o.length+o.width) + 'px', + height: o.width + 'px', + background: color, + boxShadow: shadow, + transformOrigin: 'left', + transform: 'rotate(' + ~~(360/o.lines*i+o.rotate) + 'deg) translate(' + o.radius+'px' +',0)', + borderRadius: (o.width>>1) + 'px' + }); + } + for (; i < o.lines; i++) { + seg = css(createEl(), { + position: 'absolute', + top: 1+~(o.width/2) + 'px', + transform: o.hwaccel ? 'translate3d(0,0,0)' : '', + opacity: o.opacity, + animation: useCssAnimations && addAnimation(o.opacity, o.trail, i, o.lines) + ' ' + 1/o.speed + 's linear infinite' + }); + if (o.shadow) ins(seg, css(fill('#000', '0 0 4px ' + '#000'), {top: 2+'px'})); + ins(el, ins(seg, fill(o.color, '0 0 1px rgba(0,0,0,.1)'))); + } + return el; + }, + opacity: function(el, i, val) { + if (i < el.childNodes.length) el.childNodes[i].style.opacity = val; + } + }); + + ///////////////////////////////////////////////////////////////////////// + // VML rendering for IE + ///////////////////////////////////////////////////////////////////////// + + /** + * Check and init VML support + */ + !function() { + + function vml(tag, attr) { + return createEl('<' + tag + ' xmlns="urn:schemas-microsoft.com:vml" class="spin-vml">', attr); + } + + var s = css(createEl('group'), {behavior: 'url(#default#VML)'}); + + if (!vendor(s, 'transform') && s.adj) { + + // VML support detected. Insert CSS rule ... + sheet.addRule('.spin-vml', 'behavior:url(#default#VML)'); + + Spinner.prototype.lines = function(el, o) { + var r = o.length+o.width; + var s = 2*r; + + function grp() { + return css(vml('group', {coordsize: s +' '+s, coordorigin: -r +' '+-r}), {width: s, height: s}); + } + + var margin = -(o.width+o.length)*2+'px'; + var g = css(grp(), {position: 'absolute', top: margin, left: margin}); + + var i; + + function seg(i, dx, filter) { + ins(g, + ins(css(grp(), {rotation: 360 / o.lines * i + 'deg', left: ~~dx}), + ins(css(vml('roundrect', {arcsize: 1}), { + width: r, + height: o.width, + left: o.radius, + top: -o.width>>1, + filter: filter + }), + vml('fill', {color: o.color, opacity: o.opacity}), + vml('stroke', {opacity: 0}) // transparent stroke to fix color bleeding upon opacity change + ) + ) + ); + } + + if (o.shadow) { + for (i = 1; i <= o.lines; i++) { + seg(i, -2, 'progid:DXImageTransform.Microsoft.Blur(pixelradius=2,makeshadow=1,shadowopacity=.3)'); + } + } + for (i = 1; i <= o.lines; i++) seg(i); + return ins(el, g); + }; + Spinner.prototype.opacity = function(el, i, val, o) { + var c = el.firstChild; + o = o.shadow && o.lines || 0; + if (c && i+o < c.childNodes.length) { + c = c.childNodes[i+o]; c = c && c.firstChild; c = c && c.firstChild; + if (c) c.opacity = val; + } + }; + } + else { + useCssAnimations = vendor(s, 'animation'); + } + }(); + + window.Spinner = Spinner; + +})(window, document); \ No newline at end of file From 93da4f984775dd8078a9563a5e5df9e6650a6cb4 Mon Sep 17 00:00:00 2001 From: Raphael Collet Date: Wed, 25 Jul 2012 14:45:18 +0200 Subject: [PATCH 298/349] [IMP] hr modules: add OpenChatter notification after module installation bzr revid: rco@openerp.com-20120725124518-y4zl4th862lkq838 --- addons/hr/hr_data.xml | 17 +++++ addons/hr_evaluation/hr_evaluation_data.xml | 12 ++++ addons/hr_expense/hr_expense_data.xml | 21 ++++-- addons/hr_holidays/hr_holidays_data.xml | 64 +++++++++++-------- addons/hr_recruitment/hr_recruitment_data.xml | 14 ++++ .../hr_timesheet_sheet_data.xml | 9 +++ 6 files changed, 106 insertions(+), 31 deletions(-) diff --git a/addons/hr/hr_data.xml b/addons/hr/hr_data.xml index adb6efbd1d7..d8c9251c62e 100644 --- a/addons/hr/hr_data.xml +++ b/addons/hr/hr_data.xml @@ -1,6 +1,23 @@ + + + + + Module Employee Directory has been installed + Manage your human resources in OpenERP: employees and hierarchy, + HR departments and jobs. + + More features are available in the following modules: + Recruitment Process (manage job positions and recruitment), + Timesheets Validation (record timesheets and attendance), + Leaves Management (keep track of employee leaves), + Expenses Management (manage employee expenses), + Employee Appraisals (organize employee surveys, where employees + evaluate their subordinates or their manager.) + + Administrator diff --git a/addons/hr_evaluation/hr_evaluation_data.xml b/addons/hr_evaluation/hr_evaluation_data.xml index bf482d2fcd7..6cd10f2d07a 100644 --- a/addons/hr_evaluation/hr_evaluation_data.xml +++ b/addons/hr_evaluation/hr_evaluation_data.xml @@ -1,6 +1,18 @@ + + + + + Module Employee Appraisals has been installed + Create evaluations for your subordinates or manager. You can + define a plan with several surveys, where you organize evaluation + surveys related to the hierarchy levels. Evaluations filled by + employees can exported as pdf files. + + + Self Appraisal 20 diff --git a/addons/hr_expense/hr_expense_data.xml b/addons/hr_expense/hr_expense_data.xml index 0e940c74cc0..82e9e9574b5 100644 --- a/addons/hr_expense/hr_expense_data.xml +++ b/addons/hr_expense/hr_expense_data.xml @@ -1,10 +1,23 @@ - - + + + + + Module Expenses Management has been installed + Manage your employee's expenses, with validations by employee + manager and accountant, creation and payment of invoice. + + This module also uses the analytic accounting and is compatible + with the invoice on timesheet module so that you will be able to + automatically re-invoice your customer's expenses if your work + by project. + + + + + Expenses diff --git a/addons/hr_holidays/hr_holidays_data.xml b/addons/hr_holidays/hr_holidays_data.xml index c5045d7b318..d41d72779cf 100644 --- a/addons/hr_holidays/hr_holidays_data.xml +++ b/addons/hr_holidays/hr_holidays_data.xml @@ -1,34 +1,44 @@ - + + + + + + Module Leaves Management has been installed + Manage employee leaves from the top menu "Human Resources." + Employees can create leave requests that are validated by their + manager and/or HR people. Once validated, they are visible in + the employee's calendar. HR people can define leave types and + allocate off-days for employees. + + - - - - black - + + + + black + - - - Sick Leaves - True - red - + + + Sick Leaves + True + red + + + + Compensatory Days + True + lavender + - - - Compensatory Days - True - lavender - - - - - Unpaid - True - brown - - - + + + Unpaid + True + brown + + diff --git a/addons/hr_recruitment/hr_recruitment_data.xml b/addons/hr_recruitment/hr_recruitment_data.xml index 6b64964eb2a..2250445f871 100644 --- a/addons/hr_recruitment/hr_recruitment_data.xml +++ b/addons/hr_recruitment/hr_recruitment_data.xml @@ -1,6 +1,20 @@ + + + + + Module Recruitment Process has been installed + + Manage job positions and the recruitment process in your company. + This module is integrated with the module Survey to help you to + define interviews for different jobs. + + You can automatically create application records from an email + gateway, that you can configure in the Human Resources Settings. + + diff --git a/addons/hr_timesheet_sheet/hr_timesheet_sheet_data.xml b/addons/hr_timesheet_sheet/hr_timesheet_sheet_data.xml index e66694223d2..c5839f886d3 100644 --- a/addons/hr_timesheet_sheet/hr_timesheet_sheet_data.xml +++ b/addons/hr_timesheet_sheet/hr_timesheet_sheet_data.xml @@ -1,6 +1,15 @@ + + + + + Module Timesheets Validation has been installed + From the top menu "Human Resources", encode and validate + timesheets and attendances. + + From 03ea71a4aa199b7a60628d8e22fdd196c2cbceb9 Mon Sep 17 00:00:00 2001 From: niv-openerp Date: Wed, 25 Jul 2012 14:47:57 +0200 Subject: [PATCH 299/349] [IMP] cosmetic improvement in partner view bzr revid: nicolas.vanhoren@openerp.com-20120725124757-hwd01ddf5emsudau --- openerp/addons/base/res/res_partner_view.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/openerp/addons/base/res/res_partner_view.xml b/openerp/addons/base/res/res_partner_view.xml index 3cced9eb64a..8c883301f11 100644 --- a/openerp/addons/base/res/res_partner_view.xml +++ b/openerp/addons/base/res/res_partner_view.xml @@ -149,7 +149,7 @@ + options='{"no_open": true}' attrs="{'invisible': [('is_company','=', True)]}" /> From 35f890ae5d4cc310208255b170477bfa7cb3117d Mon Sep 17 00:00:00 2001 From: Raphael Collet Date: Wed, 25 Jul 2012 15:22:17 +0200 Subject: [PATCH 300/349] [IMP] event, mail, mrp, purchase, stock: add OpenChatter notification after module installation bzr revid: rco@openerp.com-20120725132217-5ic33f2z2lch161s --- addons/event/event_data.xml | 15 +++++++++++++++ addons/mail/data/mail_data.xml | 11 +++++++++++ addons/mrp/mrp_data.xml | 14 ++++++++++++++ addons/purchase/purchase_data.xml | 13 +++++++++++++ addons/stock/stock_data.xml | 11 +++++++++++ 5 files changed, 64 insertions(+) create mode 100644 addons/event/event_data.xml diff --git a/addons/event/event_data.xml b/addons/event/event_data.xml new file mode 100644 index 00000000000..b34f9451f71 --- /dev/null +++ b/addons/event/event_data.xml @@ -0,0 +1,15 @@ + + + + + + + + Module Events Organisation has been installed + Organize events and manage their registrations. You can + automatically confirm and send acknowledgements of registrations + by email. + + + + diff --git a/addons/mail/data/mail_data.xml b/addons/mail/data/mail_data.xml index c8e8b1a488e..b491a636d36 100644 --- a/addons/mail/data/mail_data.xml +++ b/addons/mail/data/mail_data.xml @@ -1,6 +1,17 @@ + + + + + Module Social Network has been installed + Manage all communications on your documents (emails, + notifications, comments and discussions) and keep track of + news on documents you follow. + + + Email Queue Manager diff --git a/addons/mrp/mrp_data.xml b/addons/mrp/mrp_data.xml index 64dd9f2c9e5..7e98554a2ed 100644 --- a/addons/mrp/mrp_data.xml +++ b/addons/mrp/mrp_data.xml @@ -1,6 +1,20 @@ + + + + + Module MRP has been installed + Manage your manufacturing process in OpenERP by defining bill + of materials (BoM), routings and work centers. This module + supports complete integration and planification of stockable + goods, consumable, and services. + + From the Manufacturing Settings, you can choose to compute + production schedules periodically or just-in-time. + + Production order diff --git a/addons/purchase/purchase_data.xml b/addons/purchase/purchase_data.xml index 2b57a2a75bc..9d7399abab0 100644 --- a/addons/purchase/purchase_data.xml +++ b/addons/purchase/purchase_data.xml @@ -1,6 +1,19 @@ + + + + + Module Purchase Management has been installed + From the top menu Purchases, create purchase orders to buy + products from your suppliers, encode supplier invoices and + manage your payments. + + You can also manage purchase requisitions, see the Purchase + Settings. + + Purchase Order diff --git a/addons/stock/stock_data.xml b/addons/stock/stock_data.xml index 3e3ffcb83f5..69bb610ae99 100644 --- a/addons/stock/stock_data.xml +++ b/addons/stock/stock_data.xml @@ -1,6 +1,17 @@ + + + + + Module Warehouse Management has been installed + Manage your product inventoy and stock locations. You can + control your stock moves history and planning, perform stock + valuation, and trace product lots upstream and downstream + (based on serial numbers.) + + Stock Journal Sequence From f5b6da1b46c2ea964b1385f01f17510afb33a377 Mon Sep 17 00:00:00 2001 From: Raphael Collet Date: Wed, 25 Jul 2012 15:35:19 +0200 Subject: [PATCH 301/349] [FIX] mail: put the notification on the group *after* the definition of the group bzr revid: rco@openerp.com-20120725133519-vd8ehps85cr77q5h --- addons/mail/data/mail_data.xml | 11 ----------- addons/mail/data/mail_group_data.xml | 11 +++++++++++ 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/addons/mail/data/mail_data.xml b/addons/mail/data/mail_data.xml index b491a636d36..c8e8b1a488e 100644 --- a/addons/mail/data/mail_data.xml +++ b/addons/mail/data/mail_data.xml @@ -1,17 +1,6 @@ - - - - - Module Social Network has been installed - Manage all communications on your documents (emails, - notifications, comments and discussions) and keep track of - news on documents you follow. - - - Email Queue Manager diff --git a/addons/mail/data/mail_group_data.xml b/addons/mail/data/mail_group_data.xml index 11c259b3ee8..15928cd3e26 100644 --- a/addons/mail/data/mail_group_data.xml +++ b/addons/mail/data/mail_group_data.xml @@ -14,5 +14,16 @@ + + + + + Module Social Network has been installed + Manage all communications on your documents (emails, + notifications, comments and discussions) and keep track of + news on documents you follow. + + + From 00ca8067a9e953fa4aa21080fbf91e98516c222d Mon Sep 17 00:00:00 2001 From: niv-openerp Date: Wed, 25 Jul 2012 15:37:40 +0200 Subject: [PATCH 302/349] [FIX] re-enable thobber that was desactivated due to previous bug bzr revid: nicolas.vanhoren@openerp.com-20120725133740-m06but4htp4bkb1q --- addons/web/__openerp__.py | 1 + addons/web/static/src/img/throbber.gif | Bin 7625 -> 673 bytes addons/web/static/src/js/coresetup.js | 28 +++++++++++++++++++++++-- 3 files changed, 27 insertions(+), 2 deletions(-) diff --git a/addons/web/__openerp__.py b/addons/web/__openerp__.py index 9e8e258dedc..4051e607e21 100644 --- a/addons/web/__openerp__.py +++ b/addons/web/__openerp__.py @@ -20,6 +20,7 @@ "static/lib/jquery.form/jquery.form.js", "static/lib/jquery.validate/jquery.validate.js", "static/lib/jquery.ba-bbq/jquery.ba-bbq.js", + "static/lib/spinjs/spin.js", "static/lib/jquery.blockUI/jquery.blockUI.js", "static/lib/jquery.ui/js/jquery-ui-1.8.17.custom.min.js", "static/lib/jquery.ui.timepicker/js/jquery-ui-timepicker-addon.js", diff --git a/addons/web/static/src/img/throbber.gif b/addons/web/static/src/img/throbber.gif index 7ab8346ce0957a729a712adc2a61a97166f4252c..ded8d36d48686558e7fd498eff3b6cc47b8a648a 100644 GIT binary patch literal 673 zcmZ?wbhEHb6krfw_{6~Q|NnnuW8-t@&ZVcP0~w8tjk9LWTE2X_;(u;G*N|Xm#{gF& zJp*P&1_lPje^Smxsfi`2DGKG8B^e5dS&0=n`H3ldnR#jX42nNlIJtnTbbuIWv;YGG zvoXi6JO2z$d1ebIb69am&SCePk;dt|(eThNk(md#=_MRFRCqx*TEg<~GImP|9(J$n z=N>>?FwHRmnd8@^s36_KvwOp{E|)^5z>ow(NreO-*J!B~H8NXE@4royU~f>kF7c?% zS#p!Aik1*IgUmQ~87XU@ay&8N%#<*Fw$@}BzAut~A3dECXRI!e`M`B%^In-_E3}y+ z--`cXY(C6yv@%6%{(cs0Mgjenq^f<&sBPk#Ibrdw-OD&z6?s?;UD^|61XsB=ZMZ1U zoD>xM*;d}bLPx6q#F8RQAFO^e;@DNBuI=?aMdX9TXP-tMwX(wrF-aj)T3dF?Wkfn@ zoe-L1lcsREteilI!4d~Qfxj}a0#PC>2}EUJRaOSy$}N>!0&C0mE!zXJEARwk|E~S}gD?1_ z(}5R!17R|O7ko{oj=<^&#))9`^qe@+)6;Y23|MC_1lEOMT)uqa0(dW9zC1Dl*2u_h z@QmCJ#J$`1?%n&JKj7bcp9h{`d=-p`!T9+hcz*u*x8HvI9i#vM{+~pE^BZ-&q^vYg zB$s5R^KlqZBGAmN4SctUZue1$RrRQK3G3 zNPIEJ*ODq{v9fgCp_=GoE4O&e7}gfLv6C#4H-#s}_;iyw=8*OzS^YlvfylZcIfqcM zNS$x`#Ex{7etUE*d=F|EutV+?D-mOFSHb4WxI zpVT=SGusqM-2lfBD+a1^F+4=efXu=;;( z!oLf6KTrTXL<)_|siRd1RHJ4MIpU7dBex!o4@Kc37*{|w6n0dxT+RX$GqsFX<1Kk^ z7)_O18H+O^?MHE2Z})qD2w9INX*wPC_iy|~&k-vt_LV8`Fe(OWx5bWV%X`aws>vHY z-yH3ZPFGGc4271ne@xLuE#9YEQUytJtCL}30zU9|`yox0p&$_=%l$$N0a=ta>;=2w zZH%6O_VJ_|8KU8^OYOnCff59XQpU>MdQifc@v!EPj9Evqw#%I)i;L}0XbWhD=Plgp zgQ{v1GmW^m;`)$H2&a`f07sf5K?(1YwLPyyoxm28CF2p)F*K>IE?7c% zZ=8#c-_@br7>Zm`Pf;ELLRIaGbU!zxc~KJy=_)>wYjhvbs1Wz}%vrii-_*YbUsV$d zYxnux8iFQfY5JTAq+VNNG_%(p2%z88rV%j~#twtjlZ)cSk30$MT4QOaa*?*3$hFwa zYFfW{p-F;fRS(p17}UzZsW5{@zBhr8h<^iYIHM1X0X-RqL23C5C;PADBEZXU^ z!_z8cn3Y{e8}hntNYFK)NjUNrCNEGyZ<6WHC$KM)U-k5G$I#TaxUI(cqUH?wQG-Yn zWh(DYav2cYw0oSvk#>-MQ;@nl&Z}dP1BvJ4sOHTturY%#MVAb!MCm@zyIcj}zmC6u z*S<|cfe9bdgl47xx>zk-lK+lC{-ZTOPVx-2szH!{GN}R^U9-|N!#4f?mR-D{2bO45TQP0 z$(Pu&NJRz-ECqf~Ao)cdz`Vc&z-JU5Sw#q=$As&;ggpAnxYgoJW2m8W zK-upy+d^0766-$;FKCgV++8z_(Vp3xXx4V!FAF_4|BPm99?bl*OKIv>wlSk%-*5|) z#pEsX*(6j*@m}8~MG2sm6dTLKX1}=;o+Rhx&Oe<`9>9gN6i&BCOlRc|Uf|w+A5V$q z&-^&=dLI|^c1D%^#Yd`XDs$ZsiQKMF)5@-a9sT$Jz$+uM0gbH__aNf5Orq-gUEtyVNlcb}3uCp*H3UfwrIo zD)bFmDy?-BOvRb>a?b_58%Juk3A?7ZPZIv4umk>xaRz6I%hkzmssOvg6Xk<$RQq>E z`WG_t`Tx*v4wd})-7=r&32X@hZtRgASyf~KfCmUn2+Jz225F}w12s*fH6gO)<0a1K$Yz;|kH;m` zq76}p;FzrW>(|?&ef_kEe0C!vdkcl;eVV2|McVz{BT?C$Bu+}@W~Zva$%oMKTk8^v z=)I+__aDiTGDB2_wRgaISpN>BLi_QY-lr z`$3n6a=eTGb^Hgc!N(Ev3O>ZRW}cvvLBhj^7G|2l$*6*fw~lHMMm4Aav2d1gWcJA# z1VhPjt2qkE4bT)stfInQ4JXSw;4p=?rx4A0<<7v@cSg;pNSe=Cuze2g!fSseyR0d9 z_-k$H4XNhFa+2ck?BqLJth%mjFQr4+sVRgrYbRhS>eW+OWSe~4CNb$>1A@u0La5 zAgg;Tr}L@uldEGC)+DF}dy0>^^8F~EprqH>@}INdgs(lIbpvC>rx?;#XVr{q-jji? zh_|C!2Uc6V#~pS0(AiM0)NJi&tXNr{B$vOF&`3ukr(YUN=`Ltx;WDZw-5#GfDy@3R zft)+r$Vl>9Ar|~DGQ?$GtnFHjpN?orTl$a<9#H|r`Beh}=pj-vG0ZTo(IYSxqC1Qh zbM+BDLHu%}Gz>#|;{iqgB zkaQY$`ga@4Lll1^e)i50?}n91Ezp7~?}oVC1LTk0o!Y|XIj_&NM^T{l_!oy9#R=EM zA0grnAu85?ewq2O4Q7p~OzzbY`^*^6n#3Fy2!8&sgG!ObK)Jem$|boeB+Q_j53j$?sy#1@q6prgKl(+dDel6a z;$9A5o-Fs(`2A%~ZAmQGJ_fKsclmK%%8HU9qcD^s?y$rpj+!~RyPd)=F+z`9``7dn zg%>3ze)e~d=RIxjQ?5RZedy;5=r_lrtCptw?{r}op?s(^(6Sy>L&DH7KLENAs9s?{ zS6@A>r^7tCTxDICUPY7vzd!BnsKm<@U)OhaS|Yhc){0UfwF>V{|0PE45vsI_-tXf&4)|ZC!0cfQb)qipyN45G9kl$g0!a&u*WzOUQN$m;v3+vV z<0IYRFdvRM!jjh^mnGY0RR7dIp-qFM;2`@J21lR(+{aKYfe@OASE;*%A#`6pj{&Li z3A7Zc+PsquLEHg#g;Zphpyi+?;^(~tN(Sl9O!&(<;_)29TT|i=?YNbCq4s-sWUsKN zLM+`AOKiE@TXwdpx5TzR#J-`=xJ+x~l_YOCN#>o7cZ4UaNWd+`7qsg0n&D!X4xz%Y z@0y>-BuZa0Gq;R64(B;TeR<}r*-U})3H=(h2y;pgz#VX&%Q0#BRBs{=Qg#U`%T^ZT z%GK2<@TqIc7Q-Mt2bbZnD~pvV3vrWY+*9J4sM38P5%!dB8D4H~eb?0D13oh}Ov{cej&zy z%@B0>*)*}9Kvqu7sk(--5Ro?HMtlSl76bYD`BqXWOSxt>Ho3@nJZ?8-1`AFLhE!k8 z^OSupPp?{URXy&YHlHrLP+RUP*O%}r25Le+vGw11O5r5)mggC6uPUFWo5H#a=yB8| zd}LuJ#25Se-bFI#h_K7gD`&?z0`iovu;Vezv-3yPOHLv|__-p0K9vayn8)gYLrBea zJ2`rA=B5JPLwR&ox}ZjS4nonmTy;O!Da1e!-a!5my)T4F0$qwIeyHd;LU$-#=kr6X zI1g9iiR^V}$V+visoh=8r^_$ZzUsL^C`qgI>RLt26s8k<{hkv!PwBjf+deVs@m&)q zZ?Kp3dimE5ekd{kBH`lv_lJuy%Y_g4hQBau}4ey@{|HI zt`U?IU&a3($_tGXCukzN1&&g?K?^0E!(y_>J-dOa5mchV~^&W>hwv{ay5_AXj`lWsB7ad#h+vucnio?>8N zli=w4VM#?N%PzGHC;fx-HjbKp>l5j;J8J1M${ILgM>)3$l*q(@=4eUu7+?+N)Lm`{ zC$3)bJDuQ8?%{EqubD#va|9Tp%p^Lw?A)FEZVUEB$KV}f4l9Rq1c86qevz0YcEUwC#>a0 zcVDPYX{T)q8)@8V+w4|{%_T_9oM*2(Ry4eB3`?S3&`o*ogQR7h{JkZFLgu9^#g(nD ziy6$c`u*XvfBUprxMY6@84i2%Nc3nRj|yA9D3qK5Zm;C*WHN#6XARVbEVNGq$l zC2%HyE+CGm$8FQX5C%)YkR}w+g13C0^ThS&)6u+9(W9?~T}Z=>AK5*H0X}#2vR!^P zX60ISQJOp3_$j9VgZIb2JZg?dFc72Ro-zDHxm+sXkEKNP9fRFyeAS333T2;aQbm1y}>FC58Ed@5RIV z%t~ecIrB7V2jV?z7|tL;BNIm>72V*jBb+!pdF;zsAxXHG{Nr^MdZ;^}kgkZGS!cH6 zLh;8aKdSF?6s?RjxzZYzAZx3SBEJyQew+X~Rt)N{N2HW9HJEm-_*4D!C(As)XYSU; zERR?Vn2bxCp;KE+skyI!abl7 zOMG1N7W?V&Zjv{S+?^j1(M|B0mYvsyw69u&iM0H|dA&V#qmwry2ImEq_OSZ8O;0__ zSDIAtn2W+p(}!v?5kIa%e8?5W(gX^gu9IR3B{E4C=-C1jIGozZQ=o`gIu+ce#+yiV z+O7%rWHm=ZXOk8t5BmW6tn|^yIW6hXQ5@(LMzZk`koScSHpd9$y-5apfw>_eEI6fl zXj>Vnlt>p$MlFWkGE2`jIHo zn$DSRK=p~hZEG9BRaq&8=32Nf1Ou=xCfp8oA(|(*^6hhfLGw~za7k>{y(hD+*)#~C z?xnjb-&~lP(-6SKHC1`vp*f2?UFNC&!HqF&2kE*P;H)5io<3wtqWvR7nGQMke_H*; zRb?H^xxeFPw7Y0`*3#eyZ$A_XBjA^WvH9}8TR?vDrunwmorD(Qey;z6zF-C$5;%&e@PwypCUg7oMnNg9Qa82 znN-g9BdO9A#yyPLrgywLX7JuEc zg)Oe&O!t{$j=D)R294;0~f~YmYr% zP1B#=&{x)*>gjudr#LBtmlOM$cHsXe0MTy~kUR7Vm%i|51}#)q0lmSAP6xmFU?8i| Xg4?%qdPUWwYT9a|!Y_kc)<66=+QS-Y diff --git a/addons/web/static/src/js/coresetup.js b/addons/web/static/src/js/coresetup.js index 9d365a0a2b3..24441dc509f 100644 --- a/addons/web/static/src/js/coresetup.js +++ b/addons/web/static/src/js/coresetup.js @@ -550,14 +550,38 @@ $.async_when = function() { /** Setup blockui */ if ($.blockUI) { $.blockUI.defaults.baseZ = 1100; - $.blockUI.defaults.message = ''; + $.blockUI.defaults.message = '
'; $.blockUI.defaults.css.border = '0'; $.blockUI.defaults.css["background-color"] = ''; + $.blockUI.spinners = []; } instance.web.blockUI = function() { - $.blockUI.apply($, arguments); + var tmp = $.blockUI.apply($, arguments); + var target = $(".oe_blockui_spin")[0]; + var opts = { + lines: 13, // The number of lines to draw + length: 7, // The length of each line + width: 4, // The line thickness + radius: 10, // The radius of the inner circle + rotate: 0, // The rotation offset + color: '#FFF', // #rgb or #rrggbb + speed: 1, // Rounds per second + trail: 60, // Afterglow percentage + shadow: false, // Whether to render a shadow + hwaccel: false, // Whether to use hardware acceleration + className: 'spinner', // The CSS class to assign to the spinner + zIndex: 2e9, // The z-index (defaults to 2000000000) + top: 'auto', // Top position relative to parent in px + left: 'auto' // Left position relative to parent in px + }; + var spinner = new Spinner(opts).spin(target); + $.blockUI.spinners.push(spinner); + return tmp; } instance.web.unblockUI = function() { + _.each($.blockUI.spinners, function(el) { + el.stop(); + }); return $.unblockUI.apply($, arguments); } From 82f87ca7f99ae0eb142dc9eaebba995e1447634a Mon Sep 17 00:00:00 2001 From: Raphael Collet Date: Wed, 25 Jul 2012 15:51:27 +0200 Subject: [PATCH 303/349] [IMP] stock: simplify double browse used for chaining relations bzr revid: rco@openerp.com-20120725135127-6y3km4b35ebx96lr --- addons/stock/stock.py | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/addons/stock/stock.py b/addons/stock/stock.py index 59ca3af6287..6d8f6bb6fec 100644 --- a/addons/stock/stock.py +++ b/addons/stock/stock.py @@ -1728,9 +1728,8 @@ class stock_move(osv.osv): return location_id def _default_destination_address(self, cr, uid, context=None): - company_id = self.pool.get('res.users').browse(cr, uid, uid, context=context).company_id.id - partner_id = self.pool.get('res.company').browse(cr, uid, company_id, context=context).partner_id.id - return partner_id + user = self.pool.get('res.users').browse(cr, uid, uid, context=context) + return user.company_id.partner_id.id _defaults = { 'location_id': _default_location_source, From 31621f412a76cdaa04b866d94d94fe0e96f24a12 Mon Sep 17 00:00:00 2001 From: niv-openerp Date: Wed, 25 Jul 2012 16:13:33 +0200 Subject: [PATCH 304/349] wip bzr revid: nicolas.vanhoren@openerp.com-20120725141333-ueaj3e0i8imlwvre --- addons/web/static/src/js/corelib.js | 12 ++++++---- addons/web/static/src/js/view_form.js | 33 +++++++++++++++++++++++---- 2 files changed, 35 insertions(+), 10 deletions(-) diff --git a/addons/web/static/src/js/corelib.js b/addons/web/static/src/js/corelib.js index 1ed4c4788e3..a092b670ef1 100644 --- a/addons/web/static/src/js/corelib.js +++ b/addons/web/static/src/js/corelib.js @@ -378,7 +378,8 @@ instance.web.PropertiesMixin = _.extend({}, instance.web.EventDispatcherMixin, { instance.web.EventDispatcherMixin.init.call(this); this.__getterSetterInternalMap = {}; }, - set: function(map) { + set: function(map, options) { + options = options || {}; var self = this; var changed = false; _.each(map, function(val, key) { @@ -387,10 +388,11 @@ instance.web.PropertiesMixin = _.extend({}, instance.web.EventDispatcherMixin, { return; changed = true; self.__getterSetterInternalMap[key] = val; - self.trigger("change:" + key, self, { - oldValue: tmp, - newValue: val - }); + if (! options.silent) + self.trigger("change:" + key, self, { + oldValue: tmp, + newValue: val + }); }); if (changed) self.trigger("change", self); diff --git a/addons/web/static/src/js/view_form.js b/addons/web/static/src/js/view_form.js index f8f09ae2762..7c2ad5cfaf3 100644 --- a/addons/web/static/src/js/view_form.js +++ b/addons/web/static/src/js/view_form.js @@ -33,6 +33,14 @@ instance.web.form.FieldManagerMixin = { }; instance.web.views.add('form', 'instance.web.FormView'); +/** + * Properties: + * - mode: always "view" or "edit". Used to switch the view between page (view) and + * form (edit) mode. Depending what is indicated in the dataset, the view can still + * switch to create mode if needed. + * - actual_mode: always "view", "edit" or "create". Read-only property. Determines + * the real mode used by the view. + */ instance.web.FormView = instance.web.View.extend(instance.web.form.FieldManagerMixin, { /** * Indicates that this view is not searchable, and thus that no search @@ -82,6 +90,8 @@ instance.web.FormView = instance.web.View.extend(instance.web.form.FieldManagerM this.__blur_timeout = null; this.rendering_engine = new instance.web.form.FormRenderingEngine(this); this.qweb = null; // A QWeb instance will be created if the view is a QWeb template + this.on("change:mode", this, this._check_mode); + this.set({mode: "view"}); }, destroy: function() { _.each(this.get_widgets(), function(w) { @@ -91,6 +101,16 @@ instance.web.FormView = instance.web.View.extend(instance.web.form.FieldManagerM this.$element.off('.formBlur'); this._super(); }, + /** + * Reactualize actual_mode. + */ + _check_mode: function(options) { + options = options || {}; + var mode = this.get("mode"); + if (mode === "edit" && ! this.datarecord.id) + mode = "create"; + this.set({actual_mode: mode}, options); + }, on_loaded: function(data) { var self = this; if (!data) { @@ -149,8 +169,10 @@ instance.web.FormView = instance.web.View.extend(instance.web.form.FieldManagerM { label: _t('Set Default'), callback: function (item) { self.open_defaults_dialog(); } }, ]); } - this.on("change:mode", this, this.switch_mode); - this.set({mode: this.options.initial_mode}); + this.on("change:actual_mode", this, this.switch_mode); + this.set({mode: this.options.initial_mode}, {silent: true}); + this._check_mode({silent: true}); + this.switch_mode(); this.has_been_loaded.resolve(); return $.when(); }, @@ -300,6 +322,7 @@ instance.web.FormView = instance.web.View.extend(instance.web.form.FieldManagerM return $.Deferred().reject(); } this.datarecord = record; + this._check_mode(); this.set({ 'title' : record.id ? record.name : "New record" }); if (this.qweb) { @@ -576,9 +599,9 @@ instance.web.FormView = instance.web.View.extend(instance.web.form.FieldManagerM return $.Deferred().reject(); } }, - switch_mode: function() { + switch_mode: function(source, options) { var self = this; - if(this.get("mode") == "view") { + if(this.get("actual_mode") === "view") { self.$element.removeClass('oe_form_editable').addClass('oe_form_readonly'); self.$buttons.find('.oe_form_buttons_edit').hide(); self.$buttons.find('.oe_form_buttons_view').show(); @@ -957,7 +980,7 @@ instance.web.FormView = instance.web.View.extend(instance.web.form.FieldManagerM return this.fields_view.fields[field_name]; }, is_create_mode: function() { - return !this.datarecord.id; + return this.get("actual_mode") === "create"; }, open_translate_dialog: function(field) { return this._super(field); From fe8b2937c9e8652d5726c4fe74d0c51024923362 Mon Sep 17 00:00:00 2001 From: niv-openerp Date: Wed, 25 Jul 2012 16:18:32 +0200 Subject: [PATCH 305/349] Solved problems with switch_mode bzr revid: nicolas.vanhoren@openerp.com-20120725141832-4zqw6g0zf9m4hfro --- addons/web/static/src/js/view_form.js | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/addons/web/static/src/js/view_form.js b/addons/web/static/src/js/view_form.js index 7c2ad5cfaf3..5ba4dfcea54 100644 --- a/addons/web/static/src/js/view_form.js +++ b/addons/web/static/src/js/view_form.js @@ -63,6 +63,7 @@ instance.web.FormView = instance.web.View.extend(instance.web.form.FieldManagerM * @property {instance.web.Registry} registry=instance.web.form.widgets widgets registry for this form view instance */ init: function(parent, dataset, view_id, options) { + var self = this; this._super(parent); this.set_default_options(options); this.dataset = dataset; @@ -92,6 +93,11 @@ instance.web.FormView = instance.web.View.extend(instance.web.form.FieldManagerM this.qweb = null; // A QWeb instance will be created if the view is a QWeb template this.on("change:mode", this, this._check_mode); this.set({mode: "view"}); + this.has_been_loaded.then(function() { + self.switch_mode(); + self.on("change:actual_mode", self, self.switch_mode); + self.set({mode: self.options.initial_mode}); + }); }, destroy: function() { _.each(this.get_widgets(), function(w) { @@ -104,12 +110,11 @@ instance.web.FormView = instance.web.View.extend(instance.web.form.FieldManagerM /** * Reactualize actual_mode. */ - _check_mode: function(options) { - options = options || {}; + _check_mode: function() { var mode = this.get("mode"); if (mode === "edit" && ! this.datarecord.id) mode = "create"; - this.set({actual_mode: mode}, options); + this.set({actual_mode: mode}); }, on_loaded: function(data) { var self = this; @@ -169,10 +174,6 @@ instance.web.FormView = instance.web.View.extend(instance.web.form.FieldManagerM { label: _t('Set Default'), callback: function (item) { self.open_defaults_dialog(); } }, ]); } - this.on("change:actual_mode", this, this.switch_mode); - this.set({mode: this.options.initial_mode}, {silent: true}); - this._check_mode({silent: true}); - this.switch_mode(); this.has_been_loaded.resolve(); return $.when(); }, From c24ce8448d7c03f842a0c56c9f224a201884b6a4 Mon Sep 17 00:00:00 2001 From: Raphael Collet Date: Wed, 25 Jul 2012 16:30:16 +0200 Subject: [PATCH 306/349] [IMP] stock: fix groups in views bzr revid: rco@openerp.com-20120725143016-aukz7yf3ksw94qsx --- addons/stock/stock_view.xml | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/addons/stock/stock_view.xml b/addons/stock/stock_view.xml index f23437de3dc..d4acd4906ad 100644 --- a/addons/stock/stock_view.xml +++ b/addons/stock/stock_view.xml @@ -1266,21 +1266,23 @@ - + - -
- - @@ -674,7 +672,6 @@
+ +
@@ -976,7 +982,6 @@ -
@@ -985,7 +990,6 @@
- @@ -1191,6 +1195,41 @@
+ +
+ + + + + + + +
+ +
+
+
+
+
+
+ + + + or + + Cancel + + + + + + + + + + or Cancel + + this.attr('t-if', 'views.length != 1'); @@ -1243,7 +1282,6 @@ - @@ -1268,7 +1306,6 @@

(Any existing filter with the same name will be replaced)

- @@ -1465,49 +1502,6 @@ - -
-
- - - - - - -
- -
-
-
-
- -
- - - - or - - Cancel - - - - - - - - - - or Cancel - - - - - - - @@ -1572,6 +1566,7 @@ + Export From b65161c4ead5ac5aac3090f195424acee8c79415 Mon Sep 17 00:00:00 2001 From: Antony Lesuisse Date: Thu, 26 Jul 2012 11:19:20 +0200 Subject: [PATCH 321/349] o2m popup rename cancel in discard bzr revid: al@openerp.com-20120726091920-1rnj1vw8ef1j8w98 --- addons/web/static/src/xml/base.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/web/static/src/xml/base.xml b/addons/web/static/src/xml/base.xml index bb25ffa99a9..55353f0a748 100644 --- a/addons/web/static/src/xml/base.xml +++ b/addons/web/static/src/xml/base.xml @@ -1227,7 +1227,7 @@ - or Cancel + or Discard From c59c7f323748ef3c81ea8c4d8bde638d43caab4e Mon Sep 17 00:00:00 2001 From: Antony Lesuisse Date: Thu, 26 Jul 2012 11:26:18 +0200 Subject: [PATCH 322/349] [FIX] listview dont show sidebar by default bzr revid: al@openerp.com-20120726092618-atzkidy1gpd25n6w --- addons/web/static/src/js/view_list.js | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/addons/web/static/src/js/view_list.js b/addons/web/static/src/js/view_list.js index 53a8c0126b2..485b4e8d59b 100644 --- a/addons/web/static/src/js/view_list.js +++ b/addons/web/static/src/js/view_list.js @@ -357,6 +357,7 @@ instance.web.ListView = instance.web.View.extend( /** @lends instance.web.ListVi { label: _t('Delete'), callback: this.do_delete_selected }, ]); this.sidebar.add_toolbar(this.fields_view.toolbar); + this.sidebar.$element.hide(); } }, /** @@ -493,9 +494,6 @@ instance.web.ListView = instance.web.View.extend( /** @lends instance.web.ListVi }, do_show: function () { this._super(); - if (this.sidebar) { - this.sidebar.$element.show(); - } if (this.$buttons) { this.$buttons.show(); } From dd7e7d2c56512989b17533c3eaa12cb4b754a714 Mon Sep 17 00:00:00 2001 From: niv-openerp Date: Thu, 26 Jul 2012 11:51:04 +0200 Subject: [PATCH 323/349] Removed mode in favor of actual_mode bzr revid: nicolas.vanhoren@openerp.com-20120726095104-txzid0fb9tn3t1ne --- addons/web/static/src/js/view_form.js | 41 +++++++++++++++------------ 1 file changed, 23 insertions(+), 18 deletions(-) diff --git a/addons/web/static/src/js/view_form.js b/addons/web/static/src/js/view_form.js index 6d55ad40378..52c12407688 100644 --- a/addons/web/static/src/js/view_form.js +++ b/addons/web/static/src/js/view_form.js @@ -91,12 +91,11 @@ instance.web.FormView = instance.web.View.extend(instance.web.form.FieldManagerM this.__blur_timeout = null; this.rendering_engine = new instance.web.form.FormRenderingEngine(this); this.qweb = null; // A QWeb instance will be created if the view is a QWeb template - this.on("change:mode", this, this._check_mode); - this.set({mode: "view"}); + this.set({actual_mode: "view"}); this.has_been_loaded.then(function() { self.check_actual_mode(); self.on("change:actual_mode", self, self.check_actual_mode); - self.set({mode: self.options.initial_mode}); + self.set({actual_mode: self.options.initial_mode}); }); }, destroy: function() { @@ -107,15 +106,6 @@ instance.web.FormView = instance.web.View.extend(instance.web.form.FieldManagerM this.$element.off('.formBlur'); this._super(); }, - /** - * Reactualize actual_mode. - */ - _check_mode: function() { - var mode = this.get("mode"); - if (! this.datarecord.id) - mode = "create"; - this.set({actual_mode: mode}); - }, on_loaded: function(data) { var self = this; if (!data) { @@ -298,7 +288,7 @@ instance.web.FormView = instance.web.View.extend(instance.web.form.FieldManagerM } return shown.pipe(function() { if (options.editable) { - self.set({mode: "edit"}); + self.to_edit_mode(); } self.$element.css('visibility', 'visible'); }); @@ -600,6 +590,21 @@ instance.web.FormView = instance.web.View.extend(instance.web.form.FieldManagerM return $.Deferred().reject(); } }, + to_view_mode: function() { + this._check_mode("view"); + }, + to_edit_mode: function() { + this._check_mode("edit"); + }, + /** + * Reactualize actual_mode. + */ + _check_mode: function(switch_to) { + var mode = switch_to || this.get("actual_mode"); + if (! this.datarecord.id) + mode = "create"; + this.set({actual_mode: mode}); + }, check_actual_mode: function(source, options) { var self = this; if(this.get("actual_mode") === "view") { @@ -633,19 +638,19 @@ instance.web.FormView = instance.web.View.extend(instance.web.form.FieldManagerM on_button_save: function() { var self = this; return this.do_save().then(function(result) { - self.set({mode: "view"}); + self.to_view_mode(); }); }, on_button_cancel: function(event) { if (this.can_be_discarded()) { - this.set({mode: "view"}); + this.to_view_mode(); this.on_record_loaded(this.datarecord); } return false; }, on_button_new: function() { var self = this; - this.set({mode: "edit"}); + this.to_edit_mode(); return $.when(this.has_been_loaded).pipe(function() { if (self.can_be_discarded()) { return self.load_defaults(); @@ -653,7 +658,7 @@ instance.web.FormView = instance.web.View.extend(instance.web.form.FieldManagerM }); }, on_button_edit: function() { - return this.set({mode: "edit"}); + return this.to_edit_mode(); }, on_button_create: function() { this.dataset.index = null; @@ -666,7 +671,7 @@ instance.web.FormView = instance.web.View.extend(instance.web.form.FieldManagerM self.dataset.call('copy', [self.datarecord.id, {}, self.dataset.context]).then(function(new_id) { return self.on_created({ result : new_id }); }).then(function() { - return self.set({mode: "edit"}); + return self.to_edit_mode(); }).then(function() { def.resolve(); }); From 5d80e9a3e7dbc88ebb4c36557dee666083295524 Mon Sep 17 00:00:00 2001 From: niv-openerp Date: Thu, 26 Jul 2012 11:52:31 +0200 Subject: [PATCH 324/349] Small optimization bzr revid: nicolas.vanhoren@openerp.com-20120726095231-k30uufa9ny2bo28h --- addons/web/static/src/js/view_form.js | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/addons/web/static/src/js/view_form.js b/addons/web/static/src/js/view_form.js index 52c12407688..5f65affce90 100644 --- a/addons/web/static/src/js/view_form.js +++ b/addons/web/static/src/js/view_form.js @@ -91,11 +91,10 @@ instance.web.FormView = instance.web.View.extend(instance.web.form.FieldManagerM this.__blur_timeout = null; this.rendering_engine = new instance.web.form.FormRenderingEngine(this); this.qweb = null; // A QWeb instance will be created if the view is a QWeb template - this.set({actual_mode: "view"}); + self.set({actual_mode: self.options.initial_mode}); this.has_been_loaded.then(function() { - self.check_actual_mode(); self.on("change:actual_mode", self, self.check_actual_mode); - self.set({actual_mode: self.options.initial_mode}); + self.check_actual_mode(); }); }, destroy: function() { From f6e615cedc37bf91ee609aa9bd9120a6bd46e017 Mon Sep 17 00:00:00 2001 From: niv-openerp Date: Thu, 26 Jul 2012 11:56:53 +0200 Subject: [PATCH 325/349] Changed my mind about method naming bzr revid: nicolas.vanhoren@openerp.com-20120726095653-bi90exba20x8gu4n --- addons/web/static/src/js/view_form.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/addons/web/static/src/js/view_form.js b/addons/web/static/src/js/view_form.js index 5f65affce90..2968fe368dc 100644 --- a/addons/web/static/src/js/view_form.js +++ b/addons/web/static/src/js/view_form.js @@ -312,7 +312,7 @@ instance.web.FormView = instance.web.View.extend(instance.web.form.FieldManagerM return $.Deferred().reject(); } this.datarecord = record; - this._check_mode(); + this._actualize_mode(); this.set({ 'title' : record.id ? record.name : "New record" }); if (this.qweb) { @@ -590,15 +590,15 @@ instance.web.FormView = instance.web.View.extend(instance.web.form.FieldManagerM } }, to_view_mode: function() { - this._check_mode("view"); + this._actualize_mode("view"); }, to_edit_mode: function() { - this._check_mode("edit"); + this._actualize_mode("edit"); }, /** * Reactualize actual_mode. */ - _check_mode: function(switch_to) { + _actualize_mode: function(switch_to) { var mode = switch_to || this.get("actual_mode"); if (! this.datarecord.id) mode = "create"; From 49892307b7708b8901d48da7152de80c793351b7 Mon Sep 17 00:00:00 2001 From: Antony Lesuisse Date: Thu, 26 Jul 2012 12:08:35 +0200 Subject: [PATCH 326/349] [FIX] disable red button of kanban in popups bzr revid: al@openerp.com-20120726100835-j0ol9h0wencpp037 --- addons/web_kanban/static/src/css/kanban.css | 42 +++++++++++++++++++ addons/web_kanban/static/src/css/kanban.sass | 26 ++++++++++++ .../web_kanban/static/src/xml/web_kanban.xml | 2 +- 3 files changed, 69 insertions(+), 1 deletion(-) diff --git a/addons/web_kanban/static/src/css/kanban.css b/addons/web_kanban/static/src/css/kanban.css index 51cdc568a1e..a6f2cc7441b 100644 --- a/addons/web_kanban/static/src/css/kanban.css +++ b/addons/web_kanban/static/src/css/kanban.css @@ -1,3 +1,4 @@ +@charset "utf-8"; .openerp .oe_kanban_view { background: url(/web/static/src/img/form_sheetbg.png); height: inherit; @@ -525,3 +526,44 @@ padding: 0px; background: white; } + +.openerp .oe_popup_form .oe_kanban_buttons .oe_highlight { + color: #404040; + background: none; +} +.openerp .oe_popup_form .oe_kanban_buttons button.oe_highlight { + background-color: #efefef; + background-image: -webkit-gradient(linear, left top, left bottom, from(#efefef), to(#d8d8d8)); + background-image: -webkit-linear-gradient(top, #efefef, #d8d8d8); + background-image: -moz-linear-gradient(top, #efefef, #d8d8d8); + background-image: -ms-linear-gradient(top, #efefef, #d8d8d8); + background-image: -o-linear-gradient(top, #efefef, #d8d8d8); + background-image: linear-gradient(to bottom, #efefef, #d8d8d8); + -moz-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.1), 0 1px 1px rgba(255, 255, 255, 0.8) inset; + -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.1), 0 1px 1px rgba(255, 255, 255, 0.8) inset; + -box-shadow: 0 1px 2px rgba(0, 0, 0, 0.1), 0 1px 1px rgba(255, 255, 255, 0.8) inset; +} +.openerp .oe_popup_form .oe_kanban_buttons button.oe_highlight:active { + background-color: #e3e3e3; + background-image: -webkit-gradient(linear, left top, left bottom, from(#e3e3e3), to(#f6f6f6)); + background-image: -webkit-linear-gradient(top, #e3e3e3, #f6f6f6); + background-image: -moz-linear-gradient(top, #e3e3e3, #f6f6f6); + background-image: -ms-linear-gradient(top, #e3e3e3, #f6f6f6); + background-image: -o-linear-gradient(top, #e3e3e3, #f6f6f6); + background-image: linear-gradient(to bottom, #e3e3e3, #f6f6f6); + -moz-box-shadow: none; + -webkit-box-shadow: none; + -box-shadow: none; +} +.openerp .oe_popup_form .oe_kanban_buttons button.oe_highlight:hover { + background-color: #f6f6f6; + background-image: -webkit-gradient(linear, left top, left bottom, from(#f6f6f6), to(#e3e3e3)); + background-image: -webkit-linear-gradient(top, #f6f6f6, #e3e3e3); + background-image: -moz-linear-gradient(top, #f6f6f6, #e3e3e3); + background-image: -ms-linear-gradient(top, #f6f6f6, #e3e3e3); + background-image: -o-linear-gradient(top, #f6f6f6, #e3e3e3); + background-image: linear-gradient(to bottom, #f6f6f6, #e3e3e3); + -moz-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.1), 0 1px 1px rgba(255, 255, 255, 0.8) inset; + -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.1), 0 1px 1px rgba(255, 255, 255, 0.8) inset; + -box-shadow: 0 1px 2px rgba(0, 0, 0, 0.1), 0 1px 1px rgba(255, 255, 255, 0.8) inset; +} diff --git a/addons/web_kanban/static/src/css/kanban.sass b/addons/web_kanban/static/src/css/kanban.sass index 6478ea5b213..7175b398cbe 100644 --- a/addons/web_kanban/static/src/css/kanban.sass +++ b/addons/web_kanban/static/src/css/kanban.sass @@ -1,6 +1,15 @@ @charset "utf-8" // Mixins {{{ +@mixin vertical-gradient($startColor: #555, $endColor: #333) + background-color: $startColor + background-image: -webkit-gradient(linear, left top, left bottom, from($startColor), to($endColor)) /* Saf4+, Chrome */ + background-image: -webkit-linear-gradient(top, $startColor, $endColor) /* Chrome 10+, Saf5.1+, iOS 5+ */ + background-image: -moz-linear-gradient(top, $startColor, $endColor) /* FF3.6 */ + background-image: -ms-linear-gradient(top, $startColor, $endColor) /* IE10 */ + background-image: -o-linear-gradient(top, $startColor, $endColor) /* Opera 11.10+ */ + background-image: linear-gradient(to bottom, $startColor, $endColor) + @mixin radial-gradient($gradient) background-position: center center background-image: -webkit-radial-gradient(circle, $gradient) @@ -439,5 +448,22 @@ padding: 0px background: #ffffff +.openerp + .oe_popup_form + .oe_kanban_buttons + .oe_highlight + color: #404040 + background: none + button.oe_highlight + @include vertical-gradient(#efefef, #d8d8d8) + @include box-shadow((0 1px 2px rgba(0, 0, 0, .1), 0 1px 1px rgba(255, 255, 255, .8) inset)) + button.oe_highlight:active + @include vertical-gradient(#e3e3e3, #f6f6f6) + @include box-shadow(none) + button.oe_highlight:hover + @include vertical-gradient(#f6f6f6, #e3e3e3) + @include box-shadow((0 1px 2px rgba(0, 0, 0, .1), 0 1px 1px rgba(255, 255, 255, .8) inset)) + + // au BufWritePost,FileWritePost *.sass :!sass --style expanded --line-numbers > "%:p:r.css" // vim:tabstop=4:shiftwidth=4:softtabstop=4:fdm=marker: diff --git a/addons/web_kanban/static/src/xml/web_kanban.xml b/addons/web_kanban/static/src/xml/web_kanban.xml index 7eb453371b2..820189c7b27 100644 --- a/addons/web_kanban/static/src/xml/web_kanban.xml +++ b/addons/web_kanban/static/src/xml/web_kanban.xml @@ -13,7 +13,7 @@
- From 712897852dd01e0e93d5dc33ee13d554ee92e51c Mon Sep 17 00:00:00 2001 From: niv-openerp Date: Thu, 26 Jul 2012 12:27:19 +0200 Subject: [PATCH 327/349] [IMP] corrected some code documentation bzr revid: nicolas.vanhoren@openerp.com-20120726102719-ct3c5tx06izemg21 --- addons/web/static/src/js/view_form.js | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/addons/web/static/src/js/view_form.js b/addons/web/static/src/js/view_form.js index 39dc321f97d..4426c93c619 100644 --- a/addons/web/static/src/js/view_form.js +++ b/addons/web/static/src/js/view_form.js @@ -35,11 +35,8 @@ instance.web.form.FieldManagerMixin = { instance.web.views.add('form', 'instance.web.FormView'); /** * Properties: - * - mode: always "view" or "edit". Used to switch the view between page (view) and - * form (edit) mode. Depending what is indicated in the dataset, the view can still - * switch to create mode if needed. * - actual_mode: always "view", "edit" or "create". Read-only property. Determines - * the real mode used by the view. + * the mode used by the view. */ instance.web.FormView = instance.web.View.extend(instance.web.form.FieldManagerMixin, { /** @@ -598,9 +595,17 @@ instance.web.FormView = instance.web.View.extend(instance.web.form.FieldManagerM return $.Deferred().reject(); } }, + /** + * Ask the view to switch to view mode if possible. The view may not do it + * if the current record is not yet saved. It will then stay in create mode. + */ to_view_mode: function() { this._actualize_mode("view"); }, + /** + * Ask the view to switch to edit mode if possible. The view may not do it + * if the current record is not yet saved. It will then stay in create mode. + */ to_edit_mode: function() { this._actualize_mode("edit"); }, From a2154e35b61a5ab3845226697a27e29e54cbd8e8 Mon Sep 17 00:00:00 2001 From: Stephane Wirtel Date: Thu, 26 Jul 2012 12:59:30 +0200 Subject: [PATCH 328/349] [FIX] stock,delivery: rename 'Create Invoice' to 'Create Invoice/Refund' bzr revid: stw@openerp.com-20120726105930-ls0u5zfpfh9u64vr --- addons/delivery/delivery_view.xml | 2 +- addons/stock/stock_view.xml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/addons/delivery/delivery_view.xml b/addons/delivery/delivery_view.xml index 457b2d38c90..77c456a3930 100644 --- a/addons/delivery/delivery_view.xml +++ b/addons/delivery/delivery_view.xml @@ -299,7 +299,7 @@ stock.picking - +