diff --git a/addons/account/account.py b/addons/account/account.py index 5de913c45a7c8feb8790e3976c1276c46e165e13..8ef5004df047f16803f35b6b7db3b1089a1eeb78 100644 --- a/addons/account/account.py +++ b/addons/account/account.py @@ -1215,7 +1215,8 @@ class account_move(osv.osv): # # TODO: Check if period is closed ! # - def create(self, cr, uid, vals, context={}): + def create(self, cr, uid, vals, context=None): + context = context or {} if 'line_id' in vals and context.get('copy'): for l in vals['line_id']: if not l[0]: @@ -1256,6 +1257,7 @@ class account_move(osv.osv): return result def copy(self, cr, uid, id, default={}, context={}): + context = context or {} default.update({ 'state':'draft', 'name':'/', @@ -1265,7 +1267,8 @@ class account_move(osv.osv): }) return super(account_move, self).copy(cr, uid, id, default, context) - def unlink(self, cr, uid, ids, context={}, check=True): + def unlink(self, cr, uid, ids, context=None, check=True): + context = context or {} toremove = [] obj_move_line = self.pool.get('account.move.line') for move in self.browse(cr, uid, ids, context): @@ -1605,7 +1608,7 @@ class account_tax_code(osv.osv): if isinstance(ids, (int, long)): ids = [ids] reads = self.read(cr, uid, ids, ['name','code'], context, load='_classic_write') - return [(x['id'], (x['code'] and x['code'] + ' - ' or '') + x['name']) \ + return [(x['id'], (x['code'] and (x['code'] + ' - ') or '') + x['name']) \ for x in reads] def _default_company(self, cr, uid, context={}): @@ -2544,9 +2547,17 @@ class wizard_multi_charts_accounts(osv.osv_memory): if ids: return ids[0] return False + + def _get_default_accounts(self, cr, uid, context=None): + accounts = [{'acc_name':'Current','account_type':'bank'}, + {'acc_name':'Deposit','account_type':'bank'}, + {'acc_name':'Cash','account_type':'cash'}] + return accounts + _defaults = { 'company_id': lambda self, cr, uid, c: self.pool.get('res.users').browse(cr, uid, [uid], c)[0].company_id.id, 'chart_template_id': _get_chart, + 'bank_accounts_id': _get_default_accounts, 'code_digits': 6, 'seq_journal': True } diff --git a/addons/account/account_analytic_line.py b/addons/account/account_analytic_line.py index a982ca511822cf132907777e8c84c1736696b869..f3c2b71122f025058b24500714308b1a0f78d786 100644 --- a/addons/account/account_analytic_line.py +++ b/addons/account/account_analytic_line.py @@ -24,8 +24,6 @@ import time from osv import fields from osv import osv from tools.translate import _ -import tools -from tools import config class account_analytic_line(osv.osv): _inherit = 'account.analytic.line' @@ -82,12 +80,13 @@ class account_analytic_line(osv.osv): return {} product_obj = self.pool.get('product.product') analytic_journal_obj =self.pool.get('account.analytic.journal') + company_obj = self.pool.get('res.company') + product_price_type_obj = self.pool.get('product.price.type') j_id = analytic_journal_obj.browse(cr, uid, journal_id, context=context) prod = product_obj.browse(cr, uid, prod_id) if not company_id: company_id = j_id.company_id.id result = 0.0 - is_purchase = False if j_id.type <> 'sale': a = prod.product_tmpl_id.property_account_expense.id @@ -99,8 +98,6 @@ class account_analytic_line(osv.osv): 'for this product: "%s" (id:%d)') % \ (prod.name, prod.id,)) amount_unit = prod.price_get('standard_price', context)[prod.id] - is_purchase = True - else: a = prod.product_tmpl_id.property_account_income.id if not a: @@ -128,9 +125,8 @@ class account_analytic_line(osv.osv): if pricetype.field == 'list_price': flag = True amount_unit = prod.price_get(pricetype.field, context)[prod.id] - amount = amount_unit*unit_amount or 1.0 prec = self.pool.get('decimal.precision').precision_get(cr, uid, 'Account') - amount = amount_unit*unit_amount or 1.0 + amount = amount_unit*unit or 1.0 result = round(amount, prec) if not flag: result *= -1 diff --git a/addons/account/account_bank_statement.py b/addons/account/account_bank_statement.py index de6356b4575b31429906e3ed395a140e12d55868..cf50a1ab62eeab6e0ac8484c4baa8a31e1728846 100644 --- a/addons/account/account_bank_statement.py +++ b/addons/account/account_bank_statement.py @@ -378,7 +378,7 @@ class account_bank_statement(osv.osv): self.create_move_from_st_line(cr, uid, st_line.id, company_currency_id, st_line_number, context) self.write(cr, uid, [st.id], {'name': st_number}, context=context) - self.log(cr, uid, st.id, _('Statement %s is confirmed and entries are created.') % st_number) + self.log(cr, uid, st.id, _('Statement %s is confirmed, journal items are created.') % (st_number,)) done.append(st.id) return self.write(cr, uid, ids, {'state':'confirm'}, context=context) diff --git a/addons/account/account_invoice_view.xml b/addons/account/account_invoice_view.xml index 18484a7d1c81cdd802dc5a816140ef7e4c8c4aca..28d2f5a06a6e03afba1e761d98decc62ec933d5a 100644 --- a/addons/account/account_invoice_view.xml +++ b/addons/account/account_invoice_view.xml @@ -430,7 +430,7 @@ <field name="domain">[('type','=','out_invoice')]</field> <field name="context">{'type':'out_invoice', 'journal_type': 'sale'}</field> <field name="search_view_id" ref="view_account_invoice_filter"/> - <field name="help">Most of customer invoices are automatically generated in draft mode by OpenERP flows, following a purchase order for instance. Review, confirm or cancel, pay or refund your customers' invoices here. A manual invoice can be created here.</field> + <field name="help">Customer Invoices allows you create and manage invoices issued to your customers. OpenERP generates draft of invoices automatically so that you only have to confirm them before sending them to your customers.</field> </record> @@ -458,7 +458,7 @@ <field name="domain">[('type','=','in_invoice')]</field> <field name="context">{'type':'in_invoice', 'journal_type': 'purchase'}</field> <field name="search_view_id" ref="view_account_invoice_filter"/> - <field name="help">Proposal for supplier invoices are usually automatically generate by OpenERP, following a procurement order or a production order for instance. To consult and to check for, or to manually create a customer invoice, use this menu. You can review, confirm or cancel, pay or refund an invoice from the view from of the invoices.</field> + <field name="help">Supplier Invoices allows you to enter and manage invoices issued by your suppliers. OpenERP generates draft of supplier invoices automatically so that you can control what you received from your supplier according to what you purchased or received.</field> </record> <menuitem action="action_invoice_tree2" id="menu_action_invoice_tree2" parent="menu_finance_payables"/> @@ -471,7 +471,7 @@ <field name="domain">[('type','=','out_refund')]</field> <field name="context">{'type':'out_refund', 'journal_type': 'sale_refund'}</field> <field name="search_view_id" ref="view_account_invoice_filter"/> - <field name="help">A customer refund is a credit note to your customer that cancel invoice or a part of it.</field> + <field name="help">Customer Refunds helps you manage the credit notes issued/to be issued for your customers. A refund invoice is a document that cancels an invoice or a part of it. You can easily generate refunds and reconcile them from the invoice form.</field> </record> <record id="action_invoice_tree3_view1" model="ir.actions.act_window.view"> @@ -510,22 +510,5 @@ res_model="account.invoice" src_model="account.journal"/> - <act_window - domain="[('account_id.reconcile', '=', True)]" - context="{'search_default_unreconciled':True,'search_default_partner_id':[partner_id]}" - id="act_account_invoice_account_move_unreconciled" - groups="base.group_extended" - name="Items to Reconcile" - res_model="account.move.line" - src_model="account.invoice"/> - - <act_window - context="{'search_default_move_id':move_id, 'search_default_unreconciled':False,}" - id="act_account_invoice_account_move_invoice_link" - name="Invoice Items" - groups="base.group_extended" - res_model="account.move.line" - src_model="account.invoice"/> - </data> </openerp> diff --git a/addons/account/account_view.xml b/addons/account/account_view.xml index 49de367122b67c2ff22f458c288670a565301248..8217522715e52ffbcd9b5922e1f35cef886efe5d 100644 --- a/addons/account/account_view.xml +++ b/addons/account/account_view.xml @@ -635,6 +635,7 @@ <field name="domain">[('journal_id.type', '=', 'bank')]</field> <field name="context">{'journal_type':'bank'}</field> <field name="search_view_id" ref="view_bank_statement_search"/> + <field name="help">A bank statement is a summary of all financial transactions occurring over a given period of time on a deposit account, a credit card, or any other type of account. Start by encoding the starting and closing balance, then record all lines of your statement. When you are in the Payment column of the a line, you can press F1 to open the reconciliation form.</field> </record> <record model="ir.actions.act_window.view" id="action_bank_statement_tree_bank"> <field name="sequence" eval="1"/> @@ -956,7 +957,7 @@ <field name="domain">[('parent_id','=',False)]</field> <field name="view_type">tree</field> <field name="view_id" ref="view_tax_code_tree"/> - <field name="help">Chart of Taxes is a tree view reflecting the structure of the Tax Cases (or tax codes) and shows the current tax situation. The tax chart represents the amount of each area of the tax declaration for your country. It’s presented in a hierarchical structure, which can be modified to fit your needs.</field> + <field name="help">The chart of taxes is used to generate your periodic tax statement. You will see here the taxes with codes related to your legal statement according to your country.</field> </record> <!-- @@ -1188,6 +1189,7 @@ <field name="view_type">form</field> <field name="view_mode">tree,form</field> <field name="search_view_id" ref="view_account_move_line_filter"/> + <field name="help">This view is used by accountants in order to record entries massively in OpenERP. If you want to record a supplier invoice, start by recording the line of the expense account, OpenERP will propose to you automatically the Tax related to this account and the counter-part "Account Payable".</field> </record> <menuitem @@ -1435,6 +1437,7 @@ <field name="view_mode">tree,form,graph</field> <field name="view_id" ref="view_move_tree"/> <field name="search_view_id" ref="view_account_move_filter"/> + <field name="help">A journal entry consists of several journal items, each of which is either a debit or a credit. OpenERP creates automatically one journal entry per accounting document: invoices, refund, supplier payment, bank statements, etc.</field> </record> <menuitem @@ -2410,23 +2413,22 @@ <attribute name='string'></attribute> </xpath> <group string="res_config_contents" position="replace"> - <field name="company_id" widget="selection"/> - <field name ="code_digits" /> - <field name="chart_template_id" widget="selection"/> - <field name ="seq_journal" /> - <field colspan="4" mode="tree" name="bank_accounts_id" - nolabel="1" widget="one2many_list"> - <form string="Bank Information"> - <field name="acc_name"/> - <field name="account_type"/> - <field name="currency_id" widget="selection"/> - </form> - <tree editable="bottom" string="Bank Information"> - <field name="acc_name"/> - <field name="account_type"/> - <field name="currency_id" widget="selection"/> - </tree> - </field> + <field name="company_id" widget="selection"/> + <field name ="code_digits" groups="base.group_extended"/> + <field name="chart_template_id" widget="selection"/> + <field name ="seq_journal" groups="base.group_extended"/> + <field colspan="4" mode="tree" name="bank_accounts_id" nolabel="1" widget="one2many_list"> + <form string="Bank Information"> + <field name="acc_name"/> + <field name="account_type"/> + <field name="currency_id" widget="selection" groups="base.group_extended"/> + </form> + <tree editable="bottom" string="Bank Information"> + <field name="acc_name"/> + <field name="account_type"/> + <field name="currency_id" widget="selection" groups="base.group_extended"/> + </tree> + </field> </group> </data> </field> @@ -2675,6 +2677,7 @@ <field name="search_view_id" ref="view_account_bank_statement_filter"/> <field name="domain">[('journal_id.type', '=', 'cash')]</field> <field name="context">{'journal_type':'cash'}</field> + <field name="help">Cash Register allows you to manage cash entries in your cash journals.</field> </record> <record model="ir.actions.act_window.view" id="act_cash_statement1_all"> <field name="sequence" eval="1"/> diff --git a/addons/account/data/account_data2.xml b/addons/account/data/account_data2.xml index 8cd2071f70ecfde92e89ee89740a3acc517b0c1a..38bdd4b2b2c304f8575604e4b1680e03c65fdaf6 100644 --- a/addons/account/data/account_data2.xml +++ b/addons/account/data/account_data2.xml @@ -2,6 +2,11 @@ <openerp> <data noupdate="1"> + <record id="analytic_journal_sale" model="account.analytic.journal"> + <field name="name">Sales</field> + <field name="type">sale</field> + </record> + <!-- Payment term --> diff --git a/addons/account/i18n/mn.po b/addons/account/i18n/mn.po index 4c9ccd539baca1bbe055fb3df98b0870f4d2cdba..6c82bfecfd253c97e77a11f7b518dd65c75fa4d8 100644 --- a/addons/account/i18n/mn.po +++ b/addons/account/i18n/mn.po @@ -8,13 +8,13 @@ msgstr "" "Project-Id-Version: openobject-addons\n" "Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n" "POT-Creation-Date: 2009-08-28 16:01+0000\n" -"PO-Revision-Date: 2010-10-16 04:44+0000\n" -"Last-Translator: Гоби <Unknown>\n" +"PO-Revision-Date: 2010-10-16 07:37+0000\n" +"Last-Translator: OpenERP Administrators <Unknown>\n" "Language-Team: Mongolian <mn@li.org>\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2010-10-16 04:48+0000\n" +"X-Launchpad-Export-Date: 2010-10-17 04:53+0000\n" "X-Generator: Launchpad (build Unknown)\n" #. module: account @@ -3498,7 +3498,9 @@ msgstr "Өдрийн огноо" msgid "" "The amount expressed in an optional other currency if it is a multi-currency " "entry." -msgstr "Ó¨Ó©Ñ€ валютаар илÑрхийлÑÑн дүн байна" +msgstr "" +"Ð¥ÑÑ€Ñв ÑÐ½Ñ Ð³Ò¯Ð¹Ð»Ð³ÑÑ Ð³Ð°Ð´Ð°Ð°Ð´ валютаар хийгдÑÑн бол гүйлгÑÑний дүнг гадаад " +"валютаар илÑрхийлнÑ." #. module: account #: field:account.tax,parent_id:0 @@ -3599,7 +3601,7 @@ msgstr "Ð¨Ð¸Ð½Ñ Ð½Ð¸Ð¹Ð»Ò¯Ò¯Ð»Ñгчийн буцаалт" #. module: account #: view:account.model:0 msgid "Entry Model" -msgstr "ГүйлгÑÑний модель" +msgstr "ГүйлгÑÑний загвар" #. module: account #: wizard_field:account.general.ledger.report,checktype,amount_currency:0 @@ -3764,7 +3766,7 @@ msgstr "БиелÑÑ… огноо" #. module: account #: view:account.subscription:0 msgid "Entry Subscription" -msgstr "захиалгын бичилт" +msgstr "ГүйлгÑÑний Ñ‚ÑмдÑглÑл" #. module: account #: selection:account.print.journal.report,init,sort_selection:0 @@ -4126,6 +4128,8 @@ msgid "" "You can check this box to mark the entry line as a litigation with the " "associated partner" msgstr "" +"Журналын бичилт нь холбогдох харилцагчийн хувьд маргаантай гÑж үзвÑл ÑÐ½Ñ " +"нүдийг Ñонгох Ñ…ÑÑ€ÑгтÑй" #. module: account #: model:ir.actions.act_window,name:account.action_invoice_tree1 @@ -4478,7 +4482,7 @@ msgstr "Санхүүгийн жилийн дарааллууд" #. module: account #: view:account.model.line:0 msgid "Entry Model Line" -msgstr "БүртгÑл загвар шугам" +msgstr "ГүйлгÑÑний загварын мөр" #. module: account #: view:account.tax.template:0 @@ -5276,9 +5280,7 @@ msgstr "Томьёолол" #. module: account #: help:account.move.line,currency_id:0 msgid "The optional other currency if it is a multi-currency entry." -msgstr "" -"Тухайн данÑны Ð²Ð°Ð»ÑŽÑ‚Ð°Ð°Ñ Ó©Ó©Ñ€ валютаар бичилт хийх үед Ñ…ÑÑ€ÑглÑгдÑÑ… валютын " -"төрөл." +msgstr "Гадаад валютын гүйлгÑÑ Ð±Ð¾Ð» валютыг Ñонгоно." #. module: account #: view:account.invoice:0 @@ -5368,7 +5370,7 @@ msgstr "PRO-FORMA" #. module: account #: field:account.move.reconcile,line_partial_ids:0 msgid "Partial Entry lines" -msgstr "" +msgstr "Ð¥ÑÑÑгчилÑÑн журналын бичилт" #. module: account #: help:account.move.line,statement_id:0 @@ -5899,7 +5901,7 @@ msgstr "Бичилт тулгах" #. module: account #: field:account.subscription.line,move_id:0 msgid "Entry" -msgstr "Бичилт" +msgstr "Ðжил гүйлгÑÑ" #. module: account #: model:process.node,note:account.process_node_paidinvoice0 @@ -6044,7 +6046,7 @@ msgstr "Ð¥ÑÑ€ÑглÑгч уг данÑны гүйлгÑÑг банкны ху #. module: account #: wizard_button:account.subscription.generate,init,generate:0 msgid "Compute Entry Dates" -msgstr "" +msgstr "ГүйлгÑÑний огноо тооцоолол" #. module: account #: view:board.board:0 diff --git a/addons/account/installer.py b/addons/account/installer.py index b85b2dc21e23fa09ae9c61b588b3abe3bc3dad97..b689697d7a86a07bd05c78d60ab203e6cdd1ce1e 100644 --- a/addons/account/installer.py +++ b/addons/account/installer.py @@ -604,8 +604,7 @@ class account_installer(osv.osv_memory): new_paid_tax_code = self.pool.get('account.tax.code').create(cr, uid, vals_paid_tax_code) sales_tax = obj_tax.create(cr, uid, - {'name':'TAX%s%%'%(s_tax*100), - 'description':'TAX%s%%'%(s_tax*100), + {'name':'TAX %s%%'%(s_tax*100), 'amount':s_tax, 'base_code_id':new_tax_code, 'tax_code_id':new_paid_tax_code, @@ -640,8 +639,7 @@ class account_installer(osv.osv_memory): new_paid_tax_code = self.pool.get('account.tax.code').create(cr, uid, vals_paid_tax_code) purchase_tax = obj_tax.create(cr, uid, - {'name':'TAX%s%%'%(p_tax*100), - 'description':'TAX%s%%'%(p_tax*100), + {'name':'TAX %s%%'%(p_tax*100), 'amount':p_tax, 'base_code_id':new_tax_code, 'tax_code_id':new_paid_tax_code, diff --git a/addons/account/invoice.py b/addons/account/invoice.py index d2bf49280952c8e7406954a4825e28c6b438f814..2397829636701819f82f412b8c51db0470c48915 100644 --- a/addons/account/invoice.py +++ b/addons/account/invoice.py @@ -351,7 +351,7 @@ class account_invoice(osv.osv): if view_type == 'tree': doc = etree.XML(res['arch']) nodes = doc.xpath("//field[@name='partner_id']") - partner_string = 'Customer' + partner_string = _('Customer') if context.get('type', 'out_invoice') in ('in_invoice', 'in_refund'): partner_string = _('Supplier') for node in nodes: @@ -363,7 +363,7 @@ class account_invoice(osv.osv): try: res = super(account_invoice, self).create(cr, uid, vals, context) for inv_id, name in self.name_get(cr, uid, [res], context=context): - message = _('Invoice ') + " '" + name + "' "+ _("is waiting for validation.") + message = _("Invoice '%s' is waiting for validation.") % name self.log(cr, uid, inv_id, message) return res except Exception, e: @@ -376,7 +376,7 @@ class account_invoice(osv.osv): def confirm_paid(self, cr, uid, ids, context=None): self.write(cr, uid, ids, {'state':'paid'}, context=context) for inv_id, name in self.name_get(cr, uid, ids, context=context): - message = _('Invoice ') + " '" + name + "' "+ _("is marked as paid.") + message = _("Invoice '%s' is paid.") % name self.log(cr, uid, inv_id, message) return True @@ -677,7 +677,7 @@ class account_invoice(osv.osv): return (ref or '').replace('/','') def _get_analytic_lines(self, cr, uid, id): - inv = self.browse(cr, uid, [id])[0] + inv = self.browse(cr, uid, id) cur_obj = self.pool.get('res.currency') company_currency = inv.company_id.currency_id.id @@ -693,6 +693,8 @@ class account_invoice(osv.osv): ref = inv.reference else: ref = self._convert_ref(cr, uid, inv.number) + if not inv.journal_id.analytic_journal_id: + raise osv.except_osv(_('No Analytic Journal !'),_("You have to define an analytic journal on the '%s' journal!") % (inv.journal_id.name,)) il['analytic_lines'] = [(0,0, { 'name': il['name'], 'date': inv['date_invoice'], @@ -702,7 +704,7 @@ class account_invoice(osv.osv): 'product_id': il['product_id'], 'product_uom_id': il['uos_id'], 'general_account_id': il['account_id'], - 'journal_id': self._get_journal_analytic(cr, uid, inv.type), + 'journal_id': inv.journal_id.analytic_journal_id.id, 'ref': ref, })] return iml @@ -1221,12 +1223,13 @@ class account_invoice(osv.osv): inv_id, name = self.name_get(cr, uid, [invoice.id], context=context)[0] if (not round(total,self.pool.get('decimal.precision').precision_get(cr, uid, 'Account'))) or writeoff_acc_id: - self.log(cr, uid, inv_id, _('Invoice ') + " '" + name + "' "+ _("is totally paid.")) self.pool.get('account.move.line').reconcile(cr, uid, line_ids, 'manual', writeoff_acc_id, writeoff_period_id, writeoff_journal_id, context) else: code = invoice.currency_id.code - amt = str(pay_amount) + code + ' on ' + str(invoice.amount_total) + code + ' (' + str(total) + code + ' remaining)' - self.log(cr, uid, inv_id, _('Invoice ') + " '" + name + "' "+ _("is paid partially: ") + amt) + # TODO: use currency's formatting function + msg = _("Invoice '%s' is paid partially: %s%s of %s%s (%s%s remaining)") % \ + (name, pay_amount, code, invoice.amount_total, code, total, code) + self.log(cr, uid, inv_id, msg) self.pool.get('account.move.line').reconcile_partial(cr, uid, line_ids, 'manual', context) # Update the stored value (fields.function), so we write to trigger recompute @@ -1292,14 +1295,6 @@ class account_invoice_line(osv.osv): 'price_unit': _price_unit_default, } - def product_id_change_unit_price_inv(self, cr, uid, tax_id, price_unit, qty, address_invoice_id, product, partner_id, context=None): - tax_obj = self.pool.get('account.tax') - if price_unit: - taxes = tax_obj.browse(cr, uid, tax_id) - for tax in tax_obj.compute_inv(cr, uid, taxes, price_unit, qty, address_invoice_id, product, partner_id): - price_unit = price_unit - tax['amount'] - return {'price_unit': price_unit,'invoice_line_tax_id': tax_id} - def product_id_change(self, cr, uid, ids, product, uom, qty=0, name='', type='out_invoice', partner_id=False, fposition_id=False, price_unit=False, address_invoice_id=False, currency_id=False, context=None): if context is None: context = {} @@ -1399,8 +1394,7 @@ class account_invoice_line(osv.osv): taxes = res.supplier_taxes_id and res.supplier_taxes_id or (a and self.pool.get('account.account').browse(cr, uid, a).tax_ids or False) tax_id = fpos_obj.map_tax(cr, uid, fpos, taxes) if type in ('in_invoice', 'in_refund'): - to_update = self.product_id_change_unit_price_inv(cr, uid, tax_id, price_unit or res.standard_price, qty, address_invoice_id, product, partner_id, context=context) - result.update(to_update) + result.update( {'price_unit': price_unit or res.standard_price,'invoice_line_tax_id': tax_id} ) else: result.update({'price_unit': res.list_price, 'invoice_line_tax_id': tax_id}) diff --git a/addons/account/project/project_view.xml b/addons/account/project/project_view.xml index 6795ae6a0f8d15e08c6be4b65fb6c3a33298e75e..9a482155b4f61272dd466962d21dcfc692f53efb 100644 --- a/addons/account/project/project_view.xml +++ b/addons/account/project/project_view.xml @@ -129,7 +129,7 @@ <field name="view_type">tree</field> <field name="view_id" ref="view_account_analytic_account_tree"/> <field name="domain">[('parent_id','=',False)]</field> - <field name="help">Analytic Charts of Accounts allows you to access to reports by analytic accounts (or cost accounts) . From this menu you can access to analytic balance, a report that relates the analytic accounts to the general accounts. It is useful for analyzing the profitability of projects, giving you the profitability of a project for the different operations that you used to carry out the project.</field> + <field name="help">The normal chart of accounts has a structure defined by the legal requirement of the country. The analytic chart of account structure should reflect your own business needs in term of costs/revenues reporting. They are usually structured by contracts, projects, products or departements. Most of the OpenERP operations (invoices, timesheets, expenses, etc) generate analytic entries on the related account.</field> </record> <menuitem groups="analytic.group_analytic_accounting" id="next_id_40" name="Analytic" parent="account.menu_finance_generic_reporting" sequence="4"/> diff --git a/addons/account/security/ir.model.access.csv b/addons/account/security/ir.model.access.csv index 56e75a3c03605c74ccba4194aa004acf303fde5f..124593ff8f5147fc02a3af88102f0167faca45e4 100644 --- a/addons/account/security/ir.model.access.csv +++ b/addons/account/security/ir.model.access.csv @@ -31,7 +31,7 @@ "access_account_chart_template","account.chart.template","model_account_chart_template","account.group_account_manager",1,1,1,1 "access_account_tax_template","account.tax.template","model_account_tax_template","account.group_account_manager",1,1,1,1 "access_account_bank_statement","account.bank.statement","model_account_bank_statement","account.group_account_user",1,0,0,0 -"access_account_bank_statement_line","account.bank.statement.line","model_account_bank_statement_line","account.group_account_user",1,0,0,0 +"access_account_bank_statement_line","account.bank.statement.line","model_account_bank_statement_line","account.group_account_user",1,1,1,1 "access_account_analytic_line","account.analytic.line","model_account_analytic_line","account.group_account_user",1,1,1,1 "access_account_analytic_line_manager","account.analytic.line manager","model_account_analytic_line","account.group_account_manager",1,0,0,0 "access_account_analytic_account","account.analytic.account","analytic.model_account_analytic_account","base.group_user",1,0,0,0 @@ -39,7 +39,7 @@ "access_account_invoice_uinvoice","account.invoice","model_account_invoice","account.group_account_invoice",1,1,1,1 "access_account_invoice_line_uinvoice","account.invoice.line","model_account_invoice_line","account.group_account_invoice",1,1,1,1 "access_account_invoice_tax_uinvoice","account.invoice.tax","model_account_invoice_tax","account.group_account_invoice",1,1,1,1 -"access_account_move_uinvoice","account.move","model_account_move","account.group_account_invoice",1,0,0,0 +"access_account_move_uinvoice","account.move","model_account_move","account.group_account_invoice",1,1,1,1 "access_account_move_line_uinvoice","account.move.line invoice","model_account_move_line","account.group_account_invoice",1,1,1,1 "access_account_move_reconcile_uinvoice","account.move.reconcile","model_account_move_reconcile","account.group_account_invoice",1,1,1,1 "access_account_journal_period_uinvoice","account.journal.period","model_account_journal_period","account.group_account_invoice",1,1,1,1 @@ -94,47 +94,12 @@ "access_account_move_line_manager","account.move.line manager","model_account_move_line","account.group_account_manager",1,0,0,0 "access_account_move_manager","account.move manager","model_account_move","account.group_account_manager",1,0,0,0 "access_account_invoice_manager","account.invoice manager","model_account_invoice","account.group_account_manager",1,0,0,0 -"access_account_bank_statement_manager","account.bank.statement manager","model_account_bank_statement","account.group_account_manager",1,0,0,0 +"access_account_bank_statement_manager","account.bank.statement manager","model_account_bank_statement","account.group_account_manager",1,1,1,1 "access_account_entries_report_manager","account.entries.report","model_account_entries_report","account.group_account_manager",1,1,1,1 "access_analytic_entries_report_manager","analytic.entries.report","model_analytic_entries_report","account.group_account_manager",1,0,0,0 -"access_account_cashbox_line","account.cashbox.line","model_account_cashbox_line","account.group_account_manager",1,0,0,0 -"access_account_cashbox_line","account.cashbox.line","model_account_cashbox_line","account.group_account_user",1,0,0,0 -"access_account_move_line_system","account.move.line system","model_account_move_line","base.group_system",1,0,0,0 -"access_account_invoice_system","account.invoice system","model_account_invoice","base.group_system",1,0,0,0 -"access_account_bank_statement_system","account.bank.statement system","model_account_bank_statement","base.group_system",1,0,0,0 -"access_account_move_system","account.move system","model_account_move","base.group_system",1,0,0,0 -"access_account_analytic_line_system","account.analytic.line system","model_account_analytic_line","base.group_system",1,0,0,0 -"access_account_tax_code_system","account.tax.code system","model_account_tax_code","base.group_system",1,1,1,1 -"access_account_journal_system","account.journal system","model_account_journal","base.group_system",1,1,1,1 -"access_account_period_system","account.period system","model_account_period","base.group_system",1,1,1,1 -"access_account_journal_view_system","account.journal.view system","model_account_journal_view","base.group_system",1,1,1,1 -"access_account_account_type_system","account.account.type system","model_account_account_type","base.group_system",1,1,1,1 -"access_account_analytic_journal_system","account.analytic.journal system","model_account_analytic_journal","base.group_system",1,1,1,1 -"access_account_fiscalyear_system","account.fiscalyear system","model_account_fiscalyear","base.group_system",1,1,1,1 -"access_account_tax_system","account.tax system","model_account_tax","base.group_system",1,1,1,1 -"access_account_model_system","account.model system","model_account_model","base.group_system",1,1,1,1 -"access_account_subscription_system","account.subscription system","model_account_subscription","base.group_system",1,1,1,1 -"access_account_journal_column_system","account.journal.column system","model_account_journal_column","base.group_system",1,1,1,1 -"access_account_invoice_report_system","account.invoice.report system","model_account_invoice_report","base.group_system",1,0,0,0 -"access_account_entries_report_system","account.entries.report system","model_account_entries_report","base.group_system",1,0,0,0 -"access_analytic_entries_report_system","analytic.entries.report system","model_analytic_entries_report","base.group_system",1,0,0,0 -"access_account_journal_period_system","account.journal.period system","model_account_journal_period","base.group_system",1,0,0,0 -"access_account_invoice_tax_system","account.invoice.tax system","model_account_invoice_tax","base.group_system",1,0,0,0 -"access_account_tax_code_template_system","account.tax.code.template system","model_account_tax_code_template","base.group_system",1,1,1,1 -"access_account_sequence_fiscal_year_system","account.sequence.fiscalyear system","model_account_sequence_fiscalyear","base.group_system",1,1,1,1 -"access_account_fiscal_position_system","account.fiscal.position system","model_account_fiscal_position","base.group_system",1,1,1,1 -"access_account_move_reconcile_system","account.move.reconcile system","model_account_move_reconcile","base.group_system",1,0,0,0 -"access_account_account_system","account.account system","model_account_account","base.group_system",1,1,1,1 -"access_account_analytic_system","account.analytic.account system","analytic.model_account_analytic_account","base.group_system",1,1,1,1 -"access_account_model_line_system","account.model.line system","model_account_model_line","base.group_system",1,1,1,1 -"access_account_subscription_line_system","account.subscription.line system","model_account_subscription_line","base.group_system",1,1,1,1 -"access_account_payment_term_system","account.payment.term system","model_account_payment_term","base.group_system",1,1,1,1 -"access_account_payment_term_line_system","account.payment.term.line system","model_account_payment_term_line","base.group_system",1,1,1,1 -"access_report_account_receivable_system","report.account.receivable system","model_report_account_receivable","base.group_system",1,1,1,1 -"access_account_fiscal_position_tax_system","account.fiscal.position.tax system","model_account_fiscal_position_tax","base.group_system",1,1,1,1 -"access_account_fiscal_position_account_template_system","account.fiscal.position.account.template system","model_account_fiscal_position_account_template","base.group_system",1,1,1,1 +"access_account_cashbox_line","account.cashbox.line","model_account_cashbox_line","account.group_account_manager",1,1,1,1 +"access_account_cashbox_line","account.cashbox.line","model_account_cashbox_line","account.group_account_user",1,1,1,1 "access_account_journal_view_invoice","account.journal.view invoice","model_account_journal_view","account.group_account_invoice",1,1,1,1 -"access_account_fiscal_position_account_system","account.fiscal.position.account system","model_account_fiscal_position_account","base.group_system",1,1,1,1 "access_account_journal_column_invoice","account.journal.column invoice","model_account_journal_column","account.group_account_invoice",1,1,1,1 "access_account_invoice_tax_manager","account.invoice.tax manager","model_account_invoice_tax","account.group_account_manager",1,0,0,0 "access_account_invoice_tax_accountant","account.invoice.tax accountant","model_account_invoice_tax","account.group_account_user",1,0,0,0 @@ -145,7 +110,6 @@ "access_account_invoice_line_manager","account.invoice.line manager","model_account_invoice_line","account.group_account_manager",1,0,0,0 "access_account_account_invoice","account.account invoice","model_account_account","account.group_account_invoice",1,1,1,1 "access_res_partner_address_invoice","res.partner.address invoice","base.model_res_partner_address","account.group_account_invoice",1,1,1,1 -"access_account_invoice_line_system","account.invoice.line system","model_account_invoice_line","base.group_system",1,0,0,0 "access_account_analytic_accountant","account.analytic.account accountant","analytic.model_account_analytic_account","account.group_account_user",1,1,1,1 "access_account_account_type_invoice","account.account.type invoice","model_account_account_type","account.group_account_invoice",1,1,1,1 "access_report_account_receivable_invoice","report.account.receivable.invoice","model_report_account_receivable","account.group_account_invoice",1,1,1,1 diff --git a/addons/account/test/account_report.yml b/addons/account/test/account_report.yml index 0aae9dbe3d00a4d753e6b96b77fb9c3ec61126d4..d91e4771d6fdfbcf244006919a8b74a512ea58d0 100644 --- a/addons/account/test/account_report.yml +++ b/addons/account/test/account_report.yml @@ -67,8 +67,8 @@ import netsvc, tools, os, time import datetime from mx.DateTime import * - import warnings - warnings.filterwarnings('ignore',".*struct integer overflow masking is deprecated*") + import warnings + warnings.filterwarnings('ignore',".*struct integer overflow masking is deprecated*") start = datetime.date.fromtimestamp(time.mktime(time.strptime(time.strftime('%Y-%m-%d'), "%Y-%m-%d"))) start = DateTime(int(start.year), int(start.month), int(start.day)) res = {} diff --git a/addons/account/wizard/account_chart_view.xml b/addons/account/wizard/account_chart_view.xml index f35a2c5480c9bfb55c35173e4c507098e2b05715..f2e278b06cebc40ff0fd2eaca99bb8421048209b 100644 --- a/addons/account/wizard/account_chart_view.xml +++ b/addons/account/wizard/account_chart_view.xml @@ -31,6 +31,7 @@ <field name="view_mode">tree,form</field> <field name="view_id" ref="view_account_chart"/> <field name="target">new</field> + <field name="help">Display your company chart of accounts per fiscal year and filter by period. Have a complete tree view of all journal items per account code by clicking on an account.</field> </record> <menuitem icon="STOCK_INDENT" action="action_account_chart" diff --git a/addons/account/wizard/account_move_journal_view.xml b/addons/account/wizard/account_move_journal_view.xml index da59388eb9194e00545886c389c72e839e506334..24fe913d179da211f3da2fd52f48672a3972e97e 100644 --- a/addons/account/wizard/account_move_journal_view.xml +++ b/addons/account/wizard/account_move_journal_view.xml @@ -20,6 +20,7 @@ <field name="view_id" ref="view_account_move_journal_form"/> <field name="context">{'journal_type':'sale','view_mode':False}</field> <field name="target">new</field> + <field name="help">This view is used by accountants in order to record entries massively in OpenERP. If you want to record a customer invoice, select the journal and the period in the search toolbar. Then, start by recording the entry line of the income account. OpenERP will propose to you automatically the Tax related to this account and the counter-part "Account receivable".</field> </record> <menuitem action="action_account_moves_sale" sequence="16" id="menu_eaction_account_moves_sale" parent="menu_finance_receivables" icon="STOCK_JUSTIFY_FILL" groups="group_account_user,group_account_manager"/> @@ -31,6 +32,7 @@ <field name="view_id" ref="view_account_move_journal_form"/> <field name="context">{'journal_type':'purchase','view_mode':False}</field> <field name="target">new</field> + <field name="help">This view is used by accountants in order to record entries massively in OpenERP. If you want to record a supplier invoice, start by recording the line of the expense account, OpenERP will propose to you automatically the Tax related to this account and the counter-part "Account Payable".</field> </record> <menuitem action="action_account_moves_purchase" id="menu_eaction_account_moves_purchase" @@ -46,6 +48,7 @@ <field name="view_id" ref="view_account_move_journal_form"/> <field name="context">{'journal_type':'bank','view_mode':False}</field> <field name="target">new</field> + <field name="help">This view is used by accountants in order to record entries massively in OpenERP. Journal items are created by OpenERP if you use Bank Statements, Cash Registers, or Customer/Supplier payments.</field> </record> <menuitem diff --git a/addons/account_accountant/security/account_security.xml b/addons/account_accountant/security/account_security.xml index 4aceb12d2668b052a2cd933131ac2cc14a673d0f..0d6006fd9b0abb2670998b464740964ad9f493e8 100644 --- a/addons/account_accountant/security/account_security.xml +++ b/addons/account_accountant/security/account_security.xml @@ -2,7 +2,7 @@ <openerp> <data> - <record id="base.user_admin" model="res.users"> + <record id="base.user_root" model="res.users"> <field name="groups_id" eval="[(4, ref('account.group_account_manager')),(4, ref('account.group_account_user'))]"/> </record> diff --git a/addons/account_analytic_analysis/security/ir.model.access.csv b/addons/account_analytic_analysis/security/ir.model.access.csv index 4db9c88f766a5c621bad3d64018d810ab647c053..80b9f37db1f6d562fd3af216d146d9af2b53d22e 100644 --- a/addons/account_analytic_analysis/security/ir.model.access.csv +++ b/addons/account_analytic_analysis/security/ir.model.access.csv @@ -1,5 +1,3 @@ id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink access_account_analytic_analysis_summary_user,account_analytic_analysis.summary.user,model_account_analytic_analysis_summary_user,account.group_account_manager,1,0,0,0 access_account_analytic_analysis_summary_month,account_analytic_analysis.summary.month,model_account_analytic_analysis_summary_month,account.group_account_manager,1,0,0,0 -access_account_analytic_account_user,account.analytic.account.user,model_account_analytic_account,base.group_user,1,0,0,0 -access_account_analytic_account_system,account.analytic.account.system,model_account_analytic_account,base.group_system,1,0,0,0 diff --git a/addons/account_analytic_plans/security/ir.model.access.csv b/addons/account_analytic_plans/security/ir.model.access.csv index 708094dc52011d1b2ede35d7709f6d31d4bd0031..f7f141ac15a2e395b3ad5349c17211489bcb89ea 100644 --- a/addons/account_analytic_plans/security/ir.model.access.csv +++ b/addons/account_analytic_plans/security/ir.model.access.csv @@ -6,5 +6,3 @@ "access_account_analytic_plan_line_invoice","account.analytic.plan.line.invoice","model_account_analytic_plan_line","account.group_account_user",1,1,1,1 "access_account_analytic_plan_instance_manager","account.analytic.plan.instance manager","model_account_analytic_plan_instance","account.group_account_manager",1,1,1,1 "access_account_analytic_plan_instance_line_manager","account.analytic.plan.instance.line manager","model_account_analytic_plan_instance_line","account.group_account_manager",1,1,1,1 -"access_account_analytic_plan_system","account.analytic.plan system","model_account_analytic_plan","base.group_system",1,1,1,1 -"access_account_analytic_plan_line_system","account.analytic.plan.line system","model_account_analytic_plan_line","base.group_system",1,1,1,1 diff --git a/addons/account_anglo_saxon/i18n/mn.po b/addons/account_anglo_saxon/i18n/mn.po index 5c016a4b0ea8769fd4d36962434525a57469a668..2fd75bcc2456e5aaaa6eddb9b5f1fc508093d335 100644 --- a/addons/account_anglo_saxon/i18n/mn.po +++ b/addons/account_anglo_saxon/i18n/mn.po @@ -8,13 +8,13 @@ msgstr "" "Project-Id-Version: openobject-addons\n" "Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n" "POT-Creation-Date: 2009-11-24 12:50+0000\n" -"PO-Revision-Date: 2010-10-15 11:31+0000\n" -"Last-Translator: sugi <Unknown>\n" +"PO-Revision-Date: 2010-10-16 09:58+0000\n" +"Last-Translator: OpenERP Administrators <Unknown>\n" "Language-Team: Mongolian <mn@li.org>\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2010-10-16 04:48+0000\n" +"X-Launchpad-Export-Date: 2010-10-17 04:53+0000\n" "X-Generator: Launchpad (build Unknown)\n" #. module: account_anglo_saxon diff --git a/addons/account_budget/security/ir.model.access.csv b/addons/account_budget/security/ir.model.access.csv index 9e604ed5bee26381d6ce7f1f54e7a21c4e0a01e9..b2eb33f3d04510891196497c782771d1f3c4f80e 100644 --- a/addons/account_budget/security/ir.model.access.csv +++ b/addons/account_budget/security/ir.model.access.csv @@ -4,7 +4,4 @@ "access_account_budget_post","account.budget.post","model_account_budget_post","account.group_account_manager",1,0,0,0 "access_account_budget_post_accountant","account.budget.post accountant","model_account_budget_post","account.group_account_user",1,1,1,1 "access_crossovered_budget_accountant","crossovered.budget accountant","model_crossovered_budget","account.group_account_user",1,1,1,1 -"access_account_budget_post_system","account.budget.post system","model_account_budget_post","base.group_system",1,0,0,0 -"access_crossovered_budget_system","crossovered.budget system","model_crossovered_budget","base.group_system",1,0,0,0 -"access_crossovered_budget_lines_system","crossovered.budget.lines system","model_crossovered_budget_lines","base.group_system",1,1,1,1 "access_crossovered_budget_lines_accountant","crossovered.budget.lines accountant","model_crossovered_budget_lines","account.group_account_user",1,1,1,1 diff --git a/addons/account_cancel/i18n/mn.po b/addons/account_cancel/i18n/mn.po index 29ccc3a3db962bf87bb157b65333ed9104d07924..0750c13f415c52c56f9b79c0fccadec8ec35d1a5 100644 --- a/addons/account_cancel/i18n/mn.po +++ b/addons/account_cancel/i18n/mn.po @@ -8,13 +8,13 @@ msgstr "" "Project-Id-Version: openobject-addons\n" "Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n" "POT-Creation-Date: 2010-08-19 12:03+0000\n" -"PO-Revision-Date: 2010-10-15 11:33+0000\n" -"Last-Translator: sugi <Unknown>\n" +"PO-Revision-Date: 2010-10-16 08:58+0000\n" +"Last-Translator: OpenERP Administrators <Unknown>\n" "Language-Team: Mongolian <mn@li.org>\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2010-10-16 04:48+0000\n" +"X-Launchpad-Export-Date: 2010-10-17 04:53+0000\n" "X-Generator: Launchpad (build Unknown)\n" #. module: account_cancel diff --git a/addons/account_coda/security/ir.model.access.csv b/addons/account_coda/security/ir.model.access.csv index df4faec11ee3afc987557ec12e94f3b8ea5e1c87..3ab8dccd4ad53239b20e845476d32b1a24d65bac 100644 --- a/addons/account_coda/security/ir.model.access.csv +++ b/addons/account_coda/security/ir.model.access.csv @@ -3,4 +3,3 @@ "access_account_coda_manager","account.coda","model_account_coda","account.group_account_manager",1,1,1,1 "access_account_coda_import_manager","account.coda.import","model_account_coda_import","account.group_account_manager",1,1,1,1 "access_account_coda_import_user","account.coda","model_account_coda","account.group_account_user",1,0,0,0 -"access_account_coda_system","account.coda system","model_account_coda","base.group_system",1,0,0,0 diff --git a/addons/account_followup/account_followup_view.xml b/addons/account_followup/account_followup_view.xml index 85b21ff9e4e01fd6e732d0e52b439905914bb861..e246e3659e103094a6d331fd5332660885192dec 100644 --- a/addons/account_followup/account_followup_view.xml +++ b/addons/account_followup/account_followup_view.xml @@ -86,7 +86,8 @@ <field name="search_view_id" ref="view_account_followup_filter"/> <field name="view_type">form</field> </record> - <menuitem action="action_account_followup_definition_form" id="account_followup_menu" parent="account.menu_configuration_misc" groups="base.group_system"/> + <menuitem action="action_account_followup_definition_form" id="account_followup_menu" + parent="account.menu_configuration_misc"/> <report auto="False" id="account_followup_followup_report" menu="False" model="account_followup.followup" name="account_followup.followup.print" rml="account_followup/report/account_followup_print.rml" string="Followup Report"/> diff --git a/addons/account_followup/security/ir.model.access.csv b/addons/account_followup/security/ir.model.access.csv index ccf257b3ecff43886b83c36ca5e5009033771fe6..60d179d3cbe271b019b1ef784d23a585d76bf8a7 100644 --- a/addons/account_followup/security/ir.model.access.csv +++ b/addons/account_followup/security/ir.model.access.csv @@ -1,9 +1,6 @@ "id","name","model_id:id","group_id:id","perm_read","perm_write","perm_create","perm_unlink" -"access_account_followup_followup","account_followup.followup","model_account_followup_followup","base.group_system",1,1,1,1 "access_account_followup_followup_line","account_followup.followup.line","model_account_followup_followup_line","account.group_account_user",1,0,0,0 "access_account_followup_stat_manager","account_followup.stat.manager","model_account_followup_stat","account.group_account_manager",1,1,1,1 -"access_account_followup_followup_manager","account_followup.followup.manager","model_account_followup_followup","base.group_system",1,1,1,1 "access_account_followup_followup_line_manager","account_followup.followup.line.manager","model_account_followup_followup_line","account.group_account_manager",1,1,1,1 -"access_account_followup_followup_line_system","account_followup.followup.line system","model_account_followup_followup_line","base.group_system",1,1,1,1 "access_account_followup_followup_accountant","account_followup.followup user","model_account_followup_followup","account.group_account_user",1,0,0,0 "access_account_followup_stat_invoice","account_followup.stat.invoice","model_account_followup_stat","account.group_account_invoice",1,1,1,1 diff --git a/addons/account_invoice_layout/account_invoice_layout_view.xml b/addons/account_invoice_layout/account_invoice_layout_view.xml index c6283ce05dcfa74e2186ecbe8179588aee39c4ae..0d6a35657847917fa2e1b4b8092013b4a16acee3 100644 --- a/addons/account_invoice_layout/account_invoice_layout_view.xml +++ b/addons/account_invoice_layout/account_invoice_layout_view.xml @@ -100,7 +100,7 @@ </record> <menuitem name="Notification Message" id="menu_finan_config_notify_message" parent="account.menu_finance_configuration"/> - <menuitem name="All Notification Messages" id="menu_notify_mesage_tree_form" action="notify_mesage_tree_form" parent="menu_finan_config_notify_message" groups="base.group_system"/> + <menuitem name="All Notification Messages" id="menu_notify_mesage_tree_form" action="notify_mesage_tree_form" parent="menu_finan_config_notify_message"/> </data> </openerp> diff --git a/addons/account_invoice_layout/security/ir.model.access.csv b/addons/account_invoice_layout/security/ir.model.access.csv index 6eede39eb70fff9bcb65ae452c05264a9054b7a5..c838392e6eb78e362b57148fc5ea5c98849232cb 100644 --- a/addons/account_invoice_layout/security/ir.model.access.csv +++ b/addons/account_invoice_layout/security/ir.model.access.csv @@ -1,3 +1,2 @@ id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink access_notify_message,notify.message,model_notify_message,account.group_account_invoice,1,1,1,1 -access_notify_message_system,notify.message system,model_notify_message,base.group_system,1,1,1,1 diff --git a/addons/account_payment/i18n/ru.po b/addons/account_payment/i18n/ru.po index 04dc80f93c722e56ee9bb45790ab072b8c4a5c44..0ab2bcf63ff5d03ddccff45b8663e2f913cdd2fc 100644 --- a/addons/account_payment/i18n/ru.po +++ b/addons/account_payment/i18n/ru.po @@ -7,13 +7,13 @@ msgstr "" "Project-Id-Version: OpenERP Server 6.0dev\n" "Report-Msgid-Bugs-To: support@openerp.com\n" "POT-Creation-Date: 2009-08-28 16:01+0000\n" -"PO-Revision-Date: 2010-10-15 11:34+0000\n" +"PO-Revision-Date: 2010-10-16 09:33+0000\n" "Last-Translator: Nikolay Chesnokov <chesnokov_n@msn.com>\n" "Language-Team: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2010-10-16 04:48+0000\n" +"X-Launchpad-Export-Date: 2010-10-17 04:53+0000\n" "X-Generator: Launchpad (build Unknown)\n" #. module: account_payment diff --git a/addons/account_payment/security/ir.model.access.csv b/addons/account_payment/security/ir.model.access.csv index 1d39372a6b377bafb77307f871f26bca101f6627..a4b6fe0af5e0cd820398350986993d31009d4c80 100644 --- a/addons/account_payment/security/ir.model.access.csv +++ b/addons/account_payment/security/ir.model.access.csv @@ -7,7 +7,5 @@ "access_account_move_line_payment","account.move.line payment","account.model_account_move_line","group_account_payment",1,0,0,0 "access_payment_order_accountant","payment.order accountant","model_payment_order","account.group_account_user",1,1,1,1 "access_payment_order_manager","payment.order manager","model_payment_order","account.group_account_manager",1,0,0,0 -"access_payment_order_system","payment.order system","model_payment_order","base.group_system",1,0,0,0 -"access_payment_mode_system","payment.mode system","model_payment_mode","base.group_system",1,1,1,1 "access_payment_order_invoice","payment.order invoice","model_payment_order","account.group_account_invoice",1,1,1,1 "access_payment_line_invoice","payment.line invoice","model_payment_line","account.group_account_invoice",1,1,1,1 diff --git a/addons/account_report/security/ir.model.access.csv b/addons/account_report/security/ir.model.access.csv index 66fe44b671477e283313c4f9cc47aa3e311b13c5..789f18530e072fa574d1cc083636b55bf84b9c88 100644 --- a/addons/account_report/security/ir.model.access.csv +++ b/addons/account_report/security/ir.model.access.csv @@ -1,5 +1,4 @@ "id","name","model_id:id","group_id:id","perm_read","perm_write","perm_create","perm_unlink" -"access_account_report_report_system","account.report.report system","model_account_report_report","base.group_system",1,0,0,0 "access_account_report_history","account.report.history","model_account_report_history","account.group_account_manager",1,0,0,0 "access_account_report_report","account.report.report","model_account_report_report","account.group_account_user",1,1,0,0 "access_account_report_report_manager","account.report.report manager","model_account_report_report","account.group_account_manager",1,1,1,1 diff --git a/addons/account_reporting/security/ir.model.access.csv b/addons/account_reporting/security/ir.model.access.csv index e84e663dfda27e052be3f076b73d736eea9edd17..78dfe260864e93231e5d07f51f41403ddb4514f6 100644 --- a/addons/account_reporting/security/ir.model.access.csv +++ b/addons/account_reporting/security/ir.model.access.csv @@ -1,3 +1,3 @@ id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink access_color_rml,color.rml,model_color_rml,account.group_account_manager,1,1,1,1 -access_account_report_bs,account.report.bs,model_account_report_bs,base.group_system,1,1,1,1 +access_account_report_bs,account.report.bs,model_account_report_bs,account.group_account_manager,1,1,1,1 diff --git a/addons/account_tax_include/__init__.py b/addons/account_tax_include/__init__.py deleted file mode 100644 index f96eb08f2fe52d683cee0145325dab2c6789b3b3..0000000000000000000000000000000000000000 --- a/addons/account_tax_include/__init__.py +++ /dev/null @@ -1,25 +0,0 @@ -# -*- coding: utf-8 -*- -############################################################################## -# -# OpenERP, Open Source Management Solution -# Copyright (C) 2004-2010 Tiny SPRL (<http://tiny.be>). -# -# 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 <http://www.gnu.org/licenses/>. -# -############################################################################## - -import account_tax_include - -# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: - diff --git a/addons/account_tax_include/__openerp__.py b/addons/account_tax_include/__openerp__.py deleted file mode 100644 index a6bab18ce0165784e36c0148e2937928c292cf57..0000000000000000000000000000000000000000 --- a/addons/account_tax_include/__openerp__.py +++ /dev/null @@ -1,44 +0,0 @@ -# -*- coding: utf-8 -*- -############################################################################## -# -# OpenERP, Open Source Management Solution -# Copyright (C) 2004-2010 Tiny SPRL (<http://tiny.be>). -# -# 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 <http://www.gnu.org/licenses/>. -# -############################################################################## - - -{ - 'name': 'Invoices and prices with taxes included', - 'version': '1.0', - 'category': 'Generic Modules/Accounting', - 'description': """Allow the user to work tax included prices. -Especially useful for b2c businesses. - -This module implements the modification on the invoice form. -""", - 'author': 'OpenERP SA', - 'website': 'http://www.openerp.com', - 'depends': ['account'], - 'init_xml': [], - 'update_xml': ['account_tax_include_view.xml'], - 'demo_xml': [], - 'test': ['test/account_tax_include.yml'], - 'installable': True, - 'active': False, - 'certificate': '0070514190381', -} - -# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/addons/account_tax_include/account_tax_include.py b/addons/account_tax_include/account_tax_include.py deleted file mode 100644 index afd1ef36ae79fed5997071a7f1eb32236b52fc0d..0000000000000000000000000000000000000000 --- a/addons/account_tax_include/account_tax_include.py +++ /dev/null @@ -1,228 +0,0 @@ -# -*- coding: utf-8 -*- -############################################################################## -# -# OpenERP, Open Source Management Solution -# Copyright (C) 2004-2010 Tiny SPRL (<http://tiny.be>). -# -# 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 <http://www.gnu.org/licenses/>. -# -############################################################################## - -import time - -from osv import fields, osv - -class account_invoice(osv.osv): - _inherit = "account.invoice" - _columns = { - 'price_type': fields.selection([('tax_included','Tax included'), - ('tax_excluded','Tax excluded')], - 'Price method', required=True, readonly=True, - states={'draft': [('readonly', False)]}), - } - _defaults = { - 'price_type': 'tax_excluded', - } - - def refund(self, cr, uid, ids, date=None, period_id=None, description=None, journal_id=None): - map_old_new = {} - refund_ids = [] - for old_inv_id in ids: - new_id = super(account_invoice,self).refund(cr, uid, ids, date=date, period_id=period_id, description=description, journal_id=journal_id) - refund_ids += new_id - map_old_new[old_inv_id] = new_id[0] - - for old_inv_id in map_old_new.keys(): - old_inv_record = self.read(cr, uid, [old_inv_id], ['price_type'])[0]['price_type'] - self.write(cr, uid, [map_old_new[old_inv_id]], {'price_type' : old_inv_record}) - return refund_ids - -account_invoice() - -class account_invoice_line(osv.osv): - _inherit = "account.invoice.line" - - def _amount_line2(self, cr, uid, ids, name, args, context=None): - """ - Return the subtotal excluding taxes with respect to price_type. - """ - res = {} - tax_obj = self.pool.get('account.tax') - cur_obj = self.pool.get('res.currency') - dec_obj = self.pool.get('decimal.precision') - for line in self.browse(cr, uid, ids): - cur = line.invoice_id and line.invoice_id.currency_id or False - res_init = super(account_invoice_line, self)._amount_line(cr, uid, [line.id], name, args, context) - res[line.id] = { - 'price_subtotal': 0.0, - 'price_subtotal_incl': 0.0, - 'data': [] - } - if not line.quantity: - continue - if line.invoice_id: - product_taxes = [] - if line.product_id: - if line.invoice_id.type in ('out_invoice', 'out_refund'): - product_taxes = filter(lambda x: x.price_include, line.product_id.taxes_id) - else: - product_taxes = filter(lambda x: x.price_include, line.product_id.supplier_taxes_id) - - if ((set(product_taxes) == set(line.invoice_line_tax_id)) or not product_taxes) and (line.invoice_id.price_type == 'tax_included'): - res[line.id]['price_subtotal_incl'] = cur and cur_obj.round(cr, uid, cur, res_init[line.id]) or res_init[line.id] - else: - res[line.id]['price_subtotal'] = cur and cur_obj.round(cr, uid, cur, res_init[line.id]) or res_init[line.id] - for tax in tax_obj.compute_inv(cr, uid, product_taxes, res_init[line.id]/line.quantity, line.quantity): - res[line.id]['price_subtotal'] = res[line.id]['price_subtotal'] - round(tax['amount'], dec_obj.precision_get(cr, uid, 'Account')) - else: - res[line.id]['price_subtotal'] = cur and cur_obj.round(cr, uid, cur, res_init[line.id]) or res_init[line.id] - - if res[line.id]['price_subtotal']: - res[line.id]['price_subtotal_incl'] = res[line.id]['price_subtotal'] - for tax in tax_obj.compute(cr, uid, line.invoice_line_tax_id, res[line.id]['price_subtotal']/line.quantity, line.quantity): - res[line.id]['price_subtotal_incl'] = res[line.id]['price_subtotal_incl'] + tax['amount'] - res[line.id]['data'].append(tax) - else: - res[line.id]['price_subtotal'] = res[line.id]['price_subtotal_incl'] - for tax in tax_obj.compute_inv(cr, uid, line.invoice_line_tax_id, res[line.id]['price_subtotal_incl']/line.quantity, line.quantity): - res[line.id]['price_subtotal'] = res[line.id]['price_subtotal'] - tax['amount'] - res[line.id]['data'].append(tax) - - res[line.id]['price_subtotal']= round(res[line.id]['price_subtotal'], dec_obj.precision_get(cr, uid, 'Account')) - res[line.id]['price_subtotal_incl']= round(res[line.id]['price_subtotal_incl'], dec_obj.precision_get(cr, uid, 'Account')) - return res - - def _price_unit_default(self, cr, uid, context=None): - if context is None: - context = {} - if 'check_total' in context: - t = context['check_total'] - if context.get('price_type', False) == 'tax_included': - for l in context.get('invoice_line', {}): - if len(l) >= 3 and l[2]: - p = l[2].get('price_unit', 0) * (1-l[2].get('discount', 0)/100.0) - t = t - (p * l[2].get('quantity')) - return t - return super(account_invoice_line, self)._price_unit_default(cr, uid, context) - return 0 - - def _get_invoice(self, cr, uid, ids, context=None): - result = {} - for inv in self.pool.get('account.invoice').browse(cr, uid, ids, context=context): - for line in inv.invoice_line: - result[line.id] = True - return result.keys() - - _columns = { - 'price_subtotal': fields.function(_amount_line2, method=True, string='Subtotal w/o tax', multi='amount', - store={'account.invoice':(_get_invoice,['price_type'], 10), 'account.invoice.line': (lambda self, cr, uid, ids, c={}: ids, None,10)}), - 'price_subtotal_incl': fields.function(_amount_line2, method=True, string='Subtotal', multi='amount', - store={'account.invoice':(_get_invoice,['price_type'], 10), 'account.invoice.line': (lambda self, cr, uid, ids, c={}: ids, None,10)}), - } - - _defaults = { - 'price_unit': _price_unit_default, - } - - def move_line_get_item(self, cr, uid, line, context=None): - return { - 'type':'src', - 'name':line.name, - 'price_unit':(line.quantity) and (line.price_subtotal / line.quantity) or line.price_subtotal, - 'quantity':line.quantity, - 'price':line.price_subtotal, - 'account_id':line.account_id.id, - 'product_id': line.product_id.id, - 'uos_id':line.uos_id.id, - 'account_analytic_id':line.account_analytic_id.id, - } - - def product_id_change_unit_price_inv(self, cr, uid, tax_id, price_unit, qty, address_invoice_id, product, partner_id, context=None): - if context is None: - context = {} - # if the tax is already included, just return the value without calculations - if context.get('price_type', False) == 'tax_included': - return {'price_unit': price_unit,'invoice_line_tax_id': tax_id} - else: - return super(account_invoice_line, self).product_id_change_unit_price_inv(cr, uid, tax_id, price_unit, qty, address_invoice_id, product, partner_id, context=context) - - def product_id_change(self, cr, uid, ids, product, uom, qty=0, name='', type='out_invoice', partner_id=False, fposition_id=False, price_unit=False, address_invoice_id=False, currency_id=False, context=None): - # note: will call product_id_change_unit_price_inv with context... - - # Temporary trap, for bad context that came from koo: - - ctx = (context and context.copy()) or {} - ctx.update({'price_type': ctx.get('price_type', 'tax_excluded')}) - return super(account_invoice_line, self).product_id_change(cr, uid, ids, product, uom, qty, name, type, partner_id, fposition_id, price_unit, address_invoice_id, currency_id=currency_id, context=ctx) - -account_invoice_line() - -class account_invoice_tax(osv.osv): - _inherit = "account.invoice.tax" - - def compute(self, cr, uid, invoice_id, context=None): - tax_grouped = {} - tax_obj = self.pool.get('account.tax') - cur_obj = self.pool.get('res.currency') - line_obj = self.pool.get('account.invoice.line') - - inv = self.pool.get('account.invoice').browse(cr, uid, invoice_id) - line_ids = map(lambda x: x.id, inv.invoice_line) - - cur = inv.currency_id - company_currency = inv.company_id.currency_id.id - - for line in inv.invoice_line: - data = line_obj._amount_line2(cr, uid, [line.id], [], [], context)[line.id] - for tax in data['data']: - val={} - val['invoice_id'] = inv.id - val['name'] = tax['name'] - val['amount'] = tax['amount'] - val['manual'] = False - val['sequence'] = tax['sequence'] - val['base'] = tax['price_unit'] * line['quantity'] - - if inv.type in ('out_invoice','in_invoice'): - val['base_code_id'] = tax['base_code_id'] - val['tax_code_id'] = tax['tax_code_id'] - val['base_amount'] = cur_obj.compute(cr, uid, inv.currency_id.id, company_currency, val['base'] * tax['base_sign'], context={'date': inv.date_invoice or time.strftime('%Y-%m-%d')}, round=False) - val['tax_amount'] = cur_obj.compute(cr, uid, inv.currency_id.id, company_currency, val['amount'] * tax['tax_sign'], context={'date': inv.date_invoice or time.strftime('%Y-%m-%d')}, round=False) - val['account_id'] = tax['account_collected_id'] or line.account_id.id - else: - val['base_code_id'] = tax['ref_base_code_id'] - val['tax_code_id'] = tax['ref_tax_code_id'] - val['base_amount'] = cur_obj.compute(cr, uid, inv.currency_id.id, company_currency, val['base'] * tax['ref_base_sign'], context={'date': inv.date_invoice or time.strftime('%Y-%m-%d')}, round=False) - val['tax_amount'] = cur_obj.compute(cr, uid, inv.currency_id.id, company_currency, val['amount'] * tax['ref_tax_sign'], context={'date': inv.date_invoice or time.strftime('%Y-%m-%d')}, round=False) - val['account_id'] = tax['account_paid_id'] or line.account_id.id - - key = (val['tax_code_id'], val['base_code_id'], val['account_id']) - if not key in tax_grouped: - tax_grouped[key] = val - else: - tax_grouped[key]['amount'] += val['amount'] - tax_grouped[key]['base'] += val['base'] - tax_grouped[key]['base_amount'] += val['base_amount'] - tax_grouped[key]['tax_amount'] += val['tax_amount'] - - for t in tax_grouped.values(): - t['amount'] = cur_obj.round(cr, uid, cur, t['amount']) - t['base_amount'] = cur_obj.round(cr, uid, cur, t['base_amount']) - t['tax_amount'] = cur_obj.round(cr, uid, cur, t['tax_amount']) - - return tax_grouped - -account_invoice_tax() - -# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: \ No newline at end of file diff --git a/addons/account_tax_include/account_tax_include_view.xml b/addons/account_tax_include/account_tax_include_view.xml deleted file mode 100644 index 4c103cd0d50fe1d1b51899c523df1c09d51dd3e2..0000000000000000000000000000000000000000 --- a/addons/account_tax_include/account_tax_include_view.xml +++ /dev/null @@ -1,79 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<openerp> - <data> - - <record id="account_tax_view_price" model="ir.ui.view"> - <field name="name">account.tax.exlcuded.view.form</field> - <field name="type">form</field> - <field name="model">account.tax</field> - <field name="inherit_id" ref="account.view_tax_form"/> - <field name="arch" type="xml"> - <field name="python_compute" position="after"> - <separator colspan="4" string="Compute Code for Taxes included prices"/> - <field colspan="4" name="python_compute_inv" nolabel="1"/> - </field> - </field> - </record> - - <record id="account_invoice_view_price" model="ir.ui.view"> - <field name="name">account.invoice.vat.exlcuded.view.form</field> - <field name="type">form</field> - <field name="model">account.invoice</field> - <field name="inherit_id" ref="account.invoice_form"/> - <field name="arch" type="xml"> - <field name="payment_term" position="after"> - <field name="price_type"/> - </field> - </field> - </record> - - <record id="invoice_supplier_form_tax_include" model="ir.ui.view"> - <field name="name">account.invoice.supplier.tax_include</field> - <field name="type">form</field> - <field name="model">account.invoice</field> - <field name="inherit_id" ref="account.invoice_supplier_form"/> - <field name="arch" type="xml"> - <field colspan="4" default_get="{'check_total': check_total, 'invoice_line': invoice_line, 'address_invoice_id': address_invoice_id, 'partner_id': partner_id, 'price_type': 'price_type' in dir() and price_type or False}" name="invoice_line" nolabel="1" position="before"> - <field name="price_type"/> - </field> - </field> - </record> - - <record id="invoice_supplier_form_tax_include2" model="ir.ui.view"> - <field name="name">account.invoice.supplier.tax_include2</field> - <field name="type">form</field> - <field name="model">account.invoice</field> - <field name="inherit_id" ref="account.invoice_supplier_form"/> - <field name="arch" type="xml"> - <field name="price_subtotal" position="after"> - <field name="price_subtotal_incl"/> - </field> - </field> - </record> - - <record id="invoice_supplier_form_tax_include3" model="ir.ui.view"> - <field name="name">account.invoice.supplier.tax_include3</field> - <field name="type">form</field> - <field name="model">account.invoice</field> - <field name="inherit_id" ref="account.invoice_supplier_form"/> - <field name="arch" type="xml"> - <field name="product_id" position="replace"> - <field name="product_id" on_change="product_id_change(product_id, uos_id, quantity, name, parent.type, parent.partner_id, parent.fiscal_position, price_unit, parent.address_invoice_id,{'company_id': parent.company_id, 'price_type':parent.price_type})"/> - </field> - </field> - </record> - - <record id="view_invoice_line_tree" model="ir.ui.view"> - <field name="name">account.invoice.line.tree</field> - <field name="model">account.invoice.line</field> - <field name="type">tree</field> - <field name="inherit_id" ref="account.view_invoice_line_tree"/> - <field name="arch" type="xml"> - <field name="price_subtotal" position="after"> - <field name="price_subtotal_incl"/> - </field> - </field> - </record> - - </data> -</openerp> diff --git a/addons/account_tax_include/i18n/account_tax_include.pot b/addons/account_tax_include/i18n/account_tax_include.pot deleted file mode 100644 index da7622102bd82e6d78ba45ee33aed455d713783b..0000000000000000000000000000000000000000 --- a/addons/account_tax_include/i18n/account_tax_include.pot +++ /dev/null @@ -1,52 +0,0 @@ -# Translation of OpenERP Server. -# This file contains the translation of the following modules: -# * account_tax_include -# -msgid "" -msgstr "" -"Project-Id-Version: OpenERP Server 6.0dev\n" -"Report-Msgid-Bugs-To: support@openerp.com\n" -"POT-Creation-Date: 2009-08-28 16:01:51+0000\n" -"PO-Revision-Date: 2009-08-28 16:01:51+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: account_tax_include -#: constraint:ir.ui.view:0 -msgid "Invalid XML for View Architecture!" -msgstr "" - -#. module: account_tax_include -#: field:account.invoice,price_type:0 -msgid "Price method" -msgstr "" - -#. module: account_tax_include -#: model:ir.module.module,shortdesc:account_tax_include.module_meta_information -msgid "Invoices and prices with taxes included" -msgstr "" - -#. module: account_tax_include -#: selection:account.invoice,price_type:0 -msgid "Tax included" -msgstr "" - -#. module: account_tax_include -#: selection:account.invoice,price_type:0 -msgid "Tax excluded" -msgstr "" - -#. module: account_tax_include -#: view:account.tax:0 -msgid "Compute Code for Taxes included prices" -msgstr "" - -#. module: account_tax_include -#: field:account.invoice.line,price_subtotal_incl:0 -msgid "Subtotal" -msgstr "" - diff --git a/addons/account_tax_include/i18n/ar.po b/addons/account_tax_include/i18n/ar.po deleted file mode 100644 index 5090a5e011f0d6adc49ff3d25f0680cccf9f9671..0000000000000000000000000000000000000000 --- a/addons/account_tax_include/i18n/ar.po +++ /dev/null @@ -1,52 +0,0 @@ -# Translation of OpenERP Server. -# This file contains the translation of the following modules: -# * account_tax_include -# -msgid "" -msgstr "" -"Project-Id-Version: OpenERP Server 5.0.4\n" -"Report-Msgid-Bugs-To: support@openerp.com\n" -"POT-Creation-Date: 2009-08-28 16:01+0000\n" -"PO-Revision-Date: 2009-02-03 06:24+0000\n" -"Last-Translator: <>\n" -"Language-Team: \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2010-09-29 05:00+0000\n" -"X-Generator: Launchpad (build Unknown)\n" - -#. module: account_tax_include -#: constraint:ir.ui.view:0 -msgid "Invalid XML for View Architecture!" -msgstr "" - -#. module: account_tax_include -#: field:account.invoice,price_type:0 -msgid "Price method" -msgstr "" - -#. module: account_tax_include -#: model:ir.module.module,shortdesc:account_tax_include.module_meta_information -msgid "Invoices and prices with taxes included" -msgstr "" - -#. module: account_tax_include -#: selection:account.invoice,price_type:0 -msgid "Tax included" -msgstr "" - -#. module: account_tax_include -#: selection:account.invoice,price_type:0 -msgid "Tax excluded" -msgstr "" - -#. module: account_tax_include -#: view:account.tax:0 -msgid "Compute Code for Taxes included prices" -msgstr "" - -#. module: account_tax_include -#: field:account.invoice.line,price_subtotal_incl:0 -msgid "Subtotal" -msgstr "" diff --git a/addons/account_tax_include/i18n/bg.po b/addons/account_tax_include/i18n/bg.po deleted file mode 100644 index f0b055241ccdec3c04792a5ae9dde73a2084bcf6..0000000000000000000000000000000000000000 --- a/addons/account_tax_include/i18n/bg.po +++ /dev/null @@ -1,52 +0,0 @@ -# Translation of OpenERP Server. -# This file contains the translation of the following modules: -# * account_tax_include -# -msgid "" -msgstr "" -"Project-Id-Version: OpenERP Server 6.0dev\n" -"Report-Msgid-Bugs-To: support@openerp.com\n" -"POT-Creation-Date: 2009-08-28 16:01+0000\n" -"PO-Revision-Date: 2009-09-08 12:06+0000\n" -"Last-Translator: lem0na <nickyk@gmx.net>\n" -"Language-Team: \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2010-09-29 05:00+0000\n" -"X-Generator: Launchpad (build Unknown)\n" - -#. module: account_tax_include -#: constraint:ir.ui.view:0 -msgid "Invalid XML for View Architecture!" -msgstr "Ðевалиден XML за преглед на архитектурата" - -#. module: account_tax_include -#: field:account.invoice,price_type:0 -msgid "Price method" -msgstr "Ðачин на изчиÑлÑване" - -#. module: account_tax_include -#: model:ir.module.module,shortdesc:account_tax_include.module_meta_information -msgid "Invoices and prices with taxes included" -msgstr "" - -#. module: account_tax_include -#: selection:account.invoice,price_type:0 -msgid "Tax included" -msgstr "С включен данък" - -#. module: account_tax_include -#: selection:account.invoice,price_type:0 -msgid "Tax excluded" -msgstr "Без данък" - -#. module: account_tax_include -#: view:account.tax:0 -msgid "Compute Code for Taxes included prices" -msgstr "" - -#. module: account_tax_include -#: field:account.invoice.line,price_subtotal_incl:0 -msgid "Subtotal" -msgstr "" diff --git a/addons/account_tax_include/i18n/bs.po b/addons/account_tax_include/i18n/bs.po deleted file mode 100644 index 97a0c10e367ddaf049b1830a8a5e4ce5bba853f1..0000000000000000000000000000000000000000 --- a/addons/account_tax_include/i18n/bs.po +++ /dev/null @@ -1,52 +0,0 @@ -# Translation of OpenERP Server. -# This file contains the translation of the following modules: -# * account_tax_include -# -msgid "" -msgstr "" -"Project-Id-Version: OpenERP Server 6.0dev\n" -"Report-Msgid-Bugs-To: support@openerp.com\n" -"POT-Creation-Date: 2009-08-28 16:01+0000\n" -"PO-Revision-Date: 2010-02-10 12:26+0000\n" -"Last-Translator: adnan <adnankraljic@yahoo.com>\n" -"Language-Team: \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2010-09-29 05:00+0000\n" -"X-Generator: Launchpad (build Unknown)\n" - -#. module: account_tax_include -#: constraint:ir.ui.view:0 -msgid "Invalid XML for View Architecture!" -msgstr "Neodgovarajući XML za arhitekturu prikaza!" - -#. module: account_tax_include -#: field:account.invoice,price_type:0 -msgid "Price method" -msgstr "Cjenovna procedura" - -#. module: account_tax_include -#: model:ir.module.module,shortdesc:account_tax_include.module_meta_information -msgid "Invoices and prices with taxes included" -msgstr "RaÄuni i cijene sa ukljuÄenim porezom" - -#. module: account_tax_include -#: selection:account.invoice,price_type:0 -msgid "Tax included" -msgstr "Porez ukljuÄen" - -#. module: account_tax_include -#: selection:account.invoice,price_type:0 -msgid "Tax excluded" -msgstr "Porez nije ukljuÄen" - -#. module: account_tax_include -#: view:account.tax:0 -msgid "Compute Code for Taxes included prices" -msgstr "IzraÄunaj cijene sa porezima" - -#. module: account_tax_include -#: field:account.invoice.line,price_subtotal_incl:0 -msgid "Subtotal" -msgstr "Sub-ukupno" diff --git a/addons/account_tax_include/i18n/ca.po b/addons/account_tax_include/i18n/ca.po deleted file mode 100644 index ce0276a8c26cb47fac90ee9d3e36d63fbef98330..0000000000000000000000000000000000000000 --- a/addons/account_tax_include/i18n/ca.po +++ /dev/null @@ -1,53 +0,0 @@ -# Translation of OpenERP Server. -# This file contains the translation of the following modules: -# * account_tax_include -# -msgid "" -msgstr "" -"Project-Id-Version: OpenERP Server 6.0dev\n" -"Report-Msgid-Bugs-To: support@openerp.com\n" -"POT-Creation-Date: 2009-08-28 16:01+0000\n" -"PO-Revision-Date: 2009-09-29 06:30+0000\n" -"Last-Translator: Jordi Esteve (www.zikzakmedia.com) " -"<jesteve@zikzakmedia.com>\n" -"Language-Team: \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2010-09-29 05:00+0000\n" -"X-Generator: Launchpad (build Unknown)\n" - -#. module: account_tax_include -#: constraint:ir.ui.view:0 -msgid "Invalid XML for View Architecture!" -msgstr "XML invà lid per a la definició de la vista!" - -#. module: account_tax_include -#: field:account.invoice,price_type:0 -msgid "Price method" -msgstr "Mètode preu" - -#. module: account_tax_include -#: model:ir.module.module,shortdesc:account_tax_include.module_meta_information -msgid "Invoices and prices with taxes included" -msgstr "Factures i preus amb impostos inclosos" - -#. module: account_tax_include -#: selection:account.invoice,price_type:0 -msgid "Tax included" -msgstr "Impostos inclosos" - -#. module: account_tax_include -#: selection:account.invoice,price_type:0 -msgid "Tax excluded" -msgstr "Impostos exclosos" - -#. module: account_tax_include -#: view:account.tax:0 -msgid "Compute Code for Taxes included prices" -msgstr "Codi pel cà lcul dels preus amb impostos inclosos" - -#. module: account_tax_include -#: field:account.invoice.line,price_subtotal_incl:0 -msgid "Subtotal" -msgstr "Subtotal" diff --git a/addons/account_tax_include/i18n/cs.po b/addons/account_tax_include/i18n/cs.po deleted file mode 100644 index a8958b780d7c003a032cbe43627d08f768b70241..0000000000000000000000000000000000000000 --- a/addons/account_tax_include/i18n/cs.po +++ /dev/null @@ -1,52 +0,0 @@ -# Translation of OpenERP Server. -# This file contains the translation of the following modules: -# * account_tax_include -# -msgid "" -msgstr "" -"Project-Id-Version: OpenERP Server 6.0dev\n" -"Report-Msgid-Bugs-To: support@openerp.com\n" -"POT-Creation-Date: 2009-08-28 16:01+0000\n" -"PO-Revision-Date: 2010-08-02 23:35+0000\n" -"Last-Translator: mga (Open ERP) <Unknown>\n" -"Language-Team: \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2010-09-29 05:00+0000\n" -"X-Generator: Launchpad (build Unknown)\n" - -#. module: account_tax_include -#: constraint:ir.ui.view:0 -msgid "Invalid XML for View Architecture!" -msgstr "Neplatný XML pro zobrazenà architektury" - -#. module: account_tax_include -#: field:account.invoice,price_type:0 -msgid "Price method" -msgstr "Metoda urÄovánà cen" - -#. module: account_tax_include -#: model:ir.module.module,shortdesc:account_tax_include.module_meta_information -msgid "Invoices and prices with taxes included" -msgstr "Faktury a ceny vÄetnÄ› danÃ" - -#. module: account_tax_include -#: selection:account.invoice,price_type:0 -msgid "Tax included" -msgstr "DanÄ› zahrnuty" - -#. module: account_tax_include -#: selection:account.invoice,price_type:0 -msgid "Tax excluded" -msgstr "DanÄ› vylouÄeny" - -#. module: account_tax_include -#: view:account.tax:0 -msgid "Compute Code for Taxes included prices" -msgstr "VýpoÄetnà kód pro ceny vÄetnÄ› danÄ›" - -#. module: account_tax_include -#: field:account.invoice.line,price_subtotal_incl:0 -msgid "Subtotal" -msgstr "MezisouÄet" diff --git a/addons/account_tax_include/i18n/de.po b/addons/account_tax_include/i18n/de.po deleted file mode 100644 index 4635a414aaa96a4e856dae84286019bdbe8e05db..0000000000000000000000000000000000000000 --- a/addons/account_tax_include/i18n/de.po +++ /dev/null @@ -1,52 +0,0 @@ -# Translation of OpenERP Server. -# This file contains the translation of the following modules: -# * account_tax_include -# -msgid "" -msgstr "" -"Project-Id-Version: OpenERP Server 6.0dev\n" -"Report-Msgid-Bugs-To: support@openerp.com\n" -"POT-Creation-Date: 2009-08-28 16:01+0000\n" -"PO-Revision-Date: 2010-04-09 13:20+0000\n" -"Last-Translator: Ferdinand @ ChriCar <Unknown>\n" -"Language-Team: \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2010-09-29 05:00+0000\n" -"X-Generator: Launchpad (build Unknown)\n" - -#. module: account_tax_include -#: constraint:ir.ui.view:0 -msgid "Invalid XML for View Architecture!" -msgstr "Fehlerhafter xml Code für diese Ansicht!" - -#. module: account_tax_include -#: field:account.invoice,price_type:0 -msgid "Price method" -msgstr "Preismethode" - -#. module: account_tax_include -#: model:ir.module.module,shortdesc:account_tax_include.module_meta_information -msgid "Invoices and prices with taxes included" -msgstr "Rechnungen und Preise mit inkludierten Steuern" - -#. module: account_tax_include -#: selection:account.invoice,price_type:0 -msgid "Tax included" -msgstr "Steuer inklusive" - -#. module: account_tax_include -#: selection:account.invoice,price_type:0 -msgid "Tax excluded" -msgstr "Steuern exklusive" - -#. module: account_tax_include -#: view:account.tax:0 -msgid "Compute Code for Taxes included prices" -msgstr "Berechnungsgrundlage (inkl. Steuer)" - -#. module: account_tax_include -#: field:account.invoice.line,price_subtotal_incl:0 -msgid "Subtotal" -msgstr "Zwischensumme" diff --git a/addons/account_tax_include/i18n/el.po b/addons/account_tax_include/i18n/el.po deleted file mode 100644 index 74d719a9b9ee3d29cb40968a27ab87fd63084fbb..0000000000000000000000000000000000000000 --- a/addons/account_tax_include/i18n/el.po +++ /dev/null @@ -1,53 +0,0 @@ -# Greek translation for openobject-addons -# Copyright (c) 2009 Rosetta Contributors and Canonical Ltd 2009 -# This file is distributed under the same license as the openobject-addons package. -# FIRST AUTHOR <EMAIL@ADDRESS>, 2009. -# -msgid "" -msgstr "" -"Project-Id-Version: openobject-addons\n" -"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n" -"POT-Creation-Date: 2009-08-28 16:01+0000\n" -"PO-Revision-Date: 2009-09-08 15:27+0000\n" -"Last-Translator: Makis Nicolaou <mark.nicolaou@gmail.com>\n" -"Language-Team: Greek <el@li.org>\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2010-09-29 05:00+0000\n" -"X-Generator: Launchpad (build Unknown)\n" - -#. module: account_tax_include -#: constraint:ir.ui.view:0 -msgid "Invalid XML for View Architecture!" -msgstr "ΆκυÏο XML για την αÏχιτεκτονική όψης!" - -#. module: account_tax_include -#: field:account.invoice,price_type:0 -msgid "Price method" -msgstr "ÎœÎθοδος Τιμής" - -#. module: account_tax_include -#: model:ir.module.module,shortdesc:account_tax_include.module_meta_information -msgid "Invoices and prices with taxes included" -msgstr "Τιμολόγια και τιμÎÏ‚ με ενσωμάτωση φόÏων" - -#. module: account_tax_include -#: selection:account.invoice,price_type:0 -msgid "Tax included" -msgstr "ΣυμπεÏίληψη φόÏου" - -#. module: account_tax_include -#: selection:account.invoice,price_type:0 -msgid "Tax excluded" -msgstr "ΕξαιÏοÏνται φόÏοι" - -#. module: account_tax_include -#: view:account.tax:0 -msgid "Compute Code for Taxes included prices" -msgstr "Κωδικός Î¥Ï€Î¿Î»Î¿Î³Î¹ÏƒÎ¼Î¿Ï Î³Î¹Î± ΦόÏους που εμπεÏιÎχονται στις τιμÎÏ‚" - -#. module: account_tax_include -#: field:account.invoice.line,price_subtotal_incl:0 -msgid "Subtotal" -msgstr "ΥποσÏνολο" diff --git a/addons/account_tax_include/i18n/en_AU.po b/addons/account_tax_include/i18n/en_AU.po deleted file mode 100644 index 4c0e3609f24731e84f9be707ad923c5a9fe43fed..0000000000000000000000000000000000000000 --- a/addons/account_tax_include/i18n/en_AU.po +++ /dev/null @@ -1,53 +0,0 @@ -# English (Australia) 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 <EMAIL@ADDRESS>, 2010. -# -msgid "" -msgstr "" -"Project-Id-Version: openobject-addons\n" -"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n" -"POT-Creation-Date: 2009-08-28 16:01+0000\n" -"PO-Revision-Date: 2010-05-09 21:19+0000\n" -"Last-Translator: MoLE <Unknown>\n" -"Language-Team: English (Australia) <en_AU@li.org>\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2010-09-29 05:00+0000\n" -"X-Generator: Launchpad (build Unknown)\n" - -#. module: account_tax_include -#: constraint:ir.ui.view:0 -msgid "Invalid XML for View Architecture!" -msgstr "Invalid XML for View Architecture!" - -#. module: account_tax_include -#: field:account.invoice,price_type:0 -msgid "Price method" -msgstr "Price method" - -#. module: account_tax_include -#: model:ir.module.module,shortdesc:account_tax_include.module_meta_information -msgid "Invoices and prices with taxes included" -msgstr "Invoices and prices with taxes included" - -#. module: account_tax_include -#: selection:account.invoice,price_type:0 -msgid "Tax included" -msgstr "Tax included" - -#. module: account_tax_include -#: selection:account.invoice,price_type:0 -msgid "Tax excluded" -msgstr "Tax excluded" - -#. module: account_tax_include -#: view:account.tax:0 -msgid "Compute Code for Taxes included prices" -msgstr "Compute Code for Taxes included prices" - -#. module: account_tax_include -#: field:account.invoice.line,price_subtotal_incl:0 -msgid "Subtotal" -msgstr "Subtotal" diff --git a/addons/account_tax_include/i18n/en_GB.po b/addons/account_tax_include/i18n/en_GB.po deleted file mode 100644 index cd72d7a2cacc0b5834d40d72b93ace986905e34b..0000000000000000000000000000000000000000 --- a/addons/account_tax_include/i18n/en_GB.po +++ /dev/null @@ -1,53 +0,0 @@ -# English (United Kingdom) 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 <EMAIL@ADDRESS>, 2010. -# -msgid "" -msgstr "" -"Project-Id-Version: openobject-addons\n" -"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n" -"POT-Creation-Date: 2009-08-28 16:01+0000\n" -"PO-Revision-Date: 2010-05-09 21:20+0000\n" -"Last-Translator: MoLE <Unknown>\n" -"Language-Team: English (United Kingdom) <en_GB@li.org>\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2010-09-29 05:00+0000\n" -"X-Generator: Launchpad (build Unknown)\n" - -#. module: account_tax_include -#: constraint:ir.ui.view:0 -msgid "Invalid XML for View Architecture!" -msgstr "Invalid XML for View Architecture!" - -#. module: account_tax_include -#: field:account.invoice,price_type:0 -msgid "Price method" -msgstr "Price method" - -#. module: account_tax_include -#: model:ir.module.module,shortdesc:account_tax_include.module_meta_information -msgid "Invoices and prices with taxes included" -msgstr "Invoices and prices with taxes included" - -#. module: account_tax_include -#: selection:account.invoice,price_type:0 -msgid "Tax included" -msgstr "Tax included" - -#. module: account_tax_include -#: selection:account.invoice,price_type:0 -msgid "Tax excluded" -msgstr "Tax excluded" - -#. module: account_tax_include -#: view:account.tax:0 -msgid "Compute Code for Taxes included prices" -msgstr "Compute Code for Taxes included prices" - -#. module: account_tax_include -#: field:account.invoice.line,price_subtotal_incl:0 -msgid "Subtotal" -msgstr "Subtotal" diff --git a/addons/account_tax_include/i18n/es.po b/addons/account_tax_include/i18n/es.po deleted file mode 100644 index b01d20c9ec87509ead0feaa9b11bbe62895c04d5..0000000000000000000000000000000000000000 --- a/addons/account_tax_include/i18n/es.po +++ /dev/null @@ -1,52 +0,0 @@ -# Translation of OpenERP Server. -# This file contains the translation of the following modules: -# * account_tax_include -# -msgid "" -msgstr "" -"Project-Id-Version: OpenERP Server 6.0dev\n" -"Report-Msgid-Bugs-To: support@openerp.com\n" -"POT-Creation-Date: 2009-08-28 16:01+0000\n" -"PO-Revision-Date: 2009-09-24 20:17+0000\n" -"Last-Translator: Borja López Soilán (Pexego) <borjals@pexego.es>\n" -"Language-Team: \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2010-09-29 05:00+0000\n" -"X-Generator: Launchpad (build Unknown)\n" - -#. module: account_tax_include -#: constraint:ir.ui.view:0 -msgid "Invalid XML for View Architecture!" -msgstr "¡XML inválido para la definición de la vista!" - -#. module: account_tax_include -#: field:account.invoice,price_type:0 -msgid "Price method" -msgstr "Método precio" - -#. module: account_tax_include -#: model:ir.module.module,shortdesc:account_tax_include.module_meta_information -msgid "Invoices and prices with taxes included" -msgstr "Facturas y precios con impuestos incluidos" - -#. module: account_tax_include -#: selection:account.invoice,price_type:0 -msgid "Tax included" -msgstr "Impuestos incluidos" - -#. module: account_tax_include -#: selection:account.invoice,price_type:0 -msgid "Tax excluded" -msgstr "Impuestos excluidos" - -#. module: account_tax_include -#: view:account.tax:0 -msgid "Compute Code for Taxes included prices" -msgstr "Código para el cálculo de precios con impuestos incluidos" - -#. module: account_tax_include -#: field:account.invoice.line,price_subtotal_incl:0 -msgid "Subtotal" -msgstr "Subtotal" diff --git a/addons/account_tax_include/i18n/es_AR.po b/addons/account_tax_include/i18n/es_AR.po deleted file mode 100644 index a9cc40c0d4c7a34058a4400e3e08761185383a33..0000000000000000000000000000000000000000 --- a/addons/account_tax_include/i18n/es_AR.po +++ /dev/null @@ -1,52 +0,0 @@ -# Translation of OpenERP Server. -# This file contains the translation of the following modules: -# * account_tax_include -# -msgid "" -msgstr "" -"Project-Id-Version: OpenERP Server 5.0.0\n" -"Report-Msgid-Bugs-To: support@openerp.com\n" -"POT-Creation-Date: 2009-08-28 16:01+0000\n" -"PO-Revision-Date: 2009-09-14 18:28+0000\n" -"Last-Translator: Silvana Herrera <sherrera@thymbra.com>\n" -"Language-Team: \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2010-09-29 05:00+0000\n" -"X-Generator: Launchpad (build Unknown)\n" - -#. module: account_tax_include -#: constraint:ir.ui.view:0 -msgid "Invalid XML for View Architecture!" -msgstr "XML inválido para la definición de la vista!" - -#. module: account_tax_include -#: field:account.invoice,price_type:0 -msgid "Price method" -msgstr "Método de precio" - -#. module: account_tax_include -#: model:ir.module.module,shortdesc:account_tax_include.module_meta_information -msgid "Invoices and prices with taxes included" -msgstr "Facturas y precios con impuestos incluidos" - -#. module: account_tax_include -#: selection:account.invoice,price_type:0 -msgid "Tax included" -msgstr "Impuestos incluidos" - -#. module: account_tax_include -#: selection:account.invoice,price_type:0 -msgid "Tax excluded" -msgstr "Impuestos no incluidos" - -#. module: account_tax_include -#: view:account.tax:0 -msgid "Compute Code for Taxes included prices" -msgstr "Código del cálculo para precios con impuestos incluÃdos" - -#. module: account_tax_include -#: field:account.invoice.line,price_subtotal_incl:0 -msgid "Subtotal" -msgstr "Subtotal" diff --git a/addons/account_tax_include/i18n/es_EC.po b/addons/account_tax_include/i18n/es_EC.po deleted file mode 100644 index 1858f2a52bcbe5f9781d00979bee142bc2a04a26..0000000000000000000000000000000000000000 --- a/addons/account_tax_include/i18n/es_EC.po +++ /dev/null @@ -1,52 +0,0 @@ -# Translation of OpenERP Server. -# This file contains the translation of the following modules: -# * account_tax_include -# -msgid "" -msgstr "" -"Project-Id-Version: OpenERP Server 6.0dev\n" -"Report-Msgid-Bugs-To: support@openerp.com\n" -"POT-Creation-Date: 2009-08-28 16:01+0000\n" -"PO-Revision-Date: 2010-09-17 17:47+0000\n" -"Last-Translator: Borja López Soilán (Pexego) <borjals@pexego.es>\n" -"Language-Team: \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2010-09-29 05:00+0000\n" -"X-Generator: Launchpad (build Unknown)\n" - -#. module: account_tax_include -#: constraint:ir.ui.view:0 -msgid "Invalid XML for View Architecture!" -msgstr "¡XML inválido para la definición de la vista!" - -#. module: account_tax_include -#: field:account.invoice,price_type:0 -msgid "Price method" -msgstr "Método precio" - -#. module: account_tax_include -#: model:ir.module.module,shortdesc:account_tax_include.module_meta_information -msgid "Invoices and prices with taxes included" -msgstr "Facturas y precios con impuestos incluidos" - -#. module: account_tax_include -#: selection:account.invoice,price_type:0 -msgid "Tax included" -msgstr "Impuestos incluidos" - -#. module: account_tax_include -#: selection:account.invoice,price_type:0 -msgid "Tax excluded" -msgstr "Impuestos excluidos" - -#. module: account_tax_include -#: view:account.tax:0 -msgid "Compute Code for Taxes included prices" -msgstr "Código para el cálculo de precios con impuestos incluidos" - -#. module: account_tax_include -#: field:account.invoice.line,price_subtotal_incl:0 -msgid "Subtotal" -msgstr "Subtotal" diff --git a/addons/account_tax_include/i18n/et.po b/addons/account_tax_include/i18n/et.po deleted file mode 100644 index d4398a2ae582e8b560aca0de844e39fb10a6c7d7..0000000000000000000000000000000000000000 --- a/addons/account_tax_include/i18n/et.po +++ /dev/null @@ -1,52 +0,0 @@ -# Translation of OpenERP Server. -# This file contains the translation of the following modules: -# * account_tax_include -# -msgid "" -msgstr "" -"Project-Id-Version: OpenERP Server 6.0dev\n" -"Report-Msgid-Bugs-To: support@openerp.com\n" -"POT-Creation-Date: 2009-08-28 16:01+0000\n" -"PO-Revision-Date: 2009-11-09 16:28+0000\n" -"Last-Translator: Fabien (Open ERP) <fp@tinyerp.com>\n" -"Language-Team: \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2010-09-29 05:00+0000\n" -"X-Generator: Launchpad (build Unknown)\n" - -#. module: account_tax_include -#: constraint:ir.ui.view:0 -msgid "Invalid XML for View Architecture!" -msgstr "Vigane XML vaate arhitektuurile!" - -#. module: account_tax_include -#: field:account.invoice,price_type:0 -msgid "Price method" -msgstr "Hinna meetod" - -#. module: account_tax_include -#: model:ir.module.module,shortdesc:account_tax_include.module_meta_information -msgid "Invoices and prices with taxes included" -msgstr "Makse sisaldavad arved ja hinnad" - -#. module: account_tax_include -#: selection:account.invoice,price_type:0 -msgid "Tax included" -msgstr "Maksuga" - -#. module: account_tax_include -#: selection:account.invoice,price_type:0 -msgid "Tax excluded" -msgstr "Maksuta" - -#. module: account_tax_include -#: view:account.tax:0 -msgid "Compute Code for Taxes included prices" -msgstr "Arvuta kood maksuga hindadele" - -#. module: account_tax_include -#: field:account.invoice.line,price_subtotal_incl:0 -msgid "Subtotal" -msgstr "Vahesumma" diff --git a/addons/account_tax_include/i18n/fi.po b/addons/account_tax_include/i18n/fi.po deleted file mode 100644 index 0b8e8dfcee2b486cd3302d5fd0849958e6d7593c..0000000000000000000000000000000000000000 --- a/addons/account_tax_include/i18n/fi.po +++ /dev/null @@ -1,53 +0,0 @@ -# Finnish 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 <EMAIL@ADDRESS>, 2010. -# -msgid "" -msgstr "" -"Project-Id-Version: openobject-addons\n" -"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n" -"POT-Creation-Date: 2009-08-28 16:01+0000\n" -"PO-Revision-Date: 2010-08-02 23:40+0000\n" -"Last-Translator: mga (Open ERP) <Unknown>\n" -"Language-Team: Finnish <fi@li.org>\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2010-09-29 05:00+0000\n" -"X-Generator: Launchpad (build Unknown)\n" - -#. module: account_tax_include -#: constraint:ir.ui.view:0 -msgid "Invalid XML for View Architecture!" -msgstr "Virheellinen XML näkymä-arkkitehtuurille!" - -#. module: account_tax_include -#: field:account.invoice,price_type:0 -msgid "Price method" -msgstr "Hinnan tyyppi" - -#. module: account_tax_include -#: model:ir.module.module,shortdesc:account_tax_include.module_meta_information -msgid "Invoices and prices with taxes included" -msgstr "Laskut ja hinnat veroilla" - -#. module: account_tax_include -#: selection:account.invoice,price_type:0 -msgid "Tax included" -msgstr "Vero sisältyy" - -#. module: account_tax_include -#: selection:account.invoice,price_type:0 -msgid "Tax excluded" -msgstr "Ilman veroa" - -#. module: account_tax_include -#: view:account.tax:0 -msgid "Compute Code for Taxes included prices" -msgstr "Laske koodi hinnoille joissa on vero mukana" - -#. module: account_tax_include -#: field:account.invoice.line,price_subtotal_incl:0 -msgid "Subtotal" -msgstr "Välisumma" diff --git a/addons/account_tax_include/i18n/fr.po b/addons/account_tax_include/i18n/fr.po deleted file mode 100644 index 3f912c6ffba29fba12677f92fcea5f2311a0a2a8..0000000000000000000000000000000000000000 --- a/addons/account_tax_include/i18n/fr.po +++ /dev/null @@ -1,52 +0,0 @@ -# Translation of OpenERP Server. -# This file contains the translation of the following modules: -# * account_tax_include -# -msgid "" -msgstr "" -"Project-Id-Version: OpenERP Server 6.0dev\n" -"Report-Msgid-Bugs-To: support@openerp.com\n" -"POT-Creation-Date: 2009-08-28 16:01+0000\n" -"PO-Revision-Date: 2009-11-17 09:23+0000\n" -"Last-Translator: Fabien (Open ERP) <fp@tinyerp.com>\n" -"Language-Team: \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2010-09-29 05:00+0000\n" -"X-Generator: Launchpad (build Unknown)\n" - -#. module: account_tax_include -#: constraint:ir.ui.view:0 -msgid "Invalid XML for View Architecture!" -msgstr "XML non valide pour l'architecture de la vue" - -#. module: account_tax_include -#: field:account.invoice,price_type:0 -msgid "Price method" -msgstr "Méthode de prix" - -#. module: account_tax_include -#: model:ir.module.module,shortdesc:account_tax_include.module_meta_information -msgid "Invoices and prices with taxes included" -msgstr "Factures et prix avec taxes comprises" - -#. module: account_tax_include -#: selection:account.invoice,price_type:0 -msgid "Tax included" -msgstr "Taxe comprise" - -#. module: account_tax_include -#: selection:account.invoice,price_type:0 -msgid "Tax excluded" -msgstr "Hors-taxe" - -#. module: account_tax_include -#: view:account.tax:0 -msgid "Compute Code for Taxes included prices" -msgstr "Code de calcul pour les prix taxes comprises" - -#. module: account_tax_include -#: field:account.invoice.line,price_subtotal_incl:0 -msgid "Subtotal" -msgstr "Sous-total" diff --git a/addons/account_tax_include/i18n/gl.po b/addons/account_tax_include/i18n/gl.po deleted file mode 100644 index 96e9538706143a79d2f6bd2221c7cfa4918f6ee2..0000000000000000000000000000000000000000 --- a/addons/account_tax_include/i18n/gl.po +++ /dev/null @@ -1,54 +0,0 @@ -# translation of account-tax-include-es.po to Galego -# Translation of OpenERP Server. -# This file contains the translation of the following modules: -# * account_tax_include -# -# Frco. Javier Rial RodrÃguez <fjrial@cesga.es>, 2009. -msgid "" -msgstr "" -"Project-Id-Version: account-tax-include-es\n" -"Report-Msgid-Bugs-To: support@openerp.com\n" -"POT-Creation-Date: 2009-08-28 16:01+0000\n" -"PO-Revision-Date: 2009-09-08 12:37+0000\n" -"Last-Translator: Fabien (Open ERP) <fp@tinyerp.com>\n" -"Language-Team: Galego <g11n@mancomun.org>\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2010-09-29 05:00+0000\n" -"X-Generator: Launchpad (build Unknown)\n" - -#. module: account_tax_include -#: constraint:ir.ui.view:0 -msgid "Invalid XML for View Architecture!" -msgstr "¡XML non válido para a definición da vista!" - -#. module: account_tax_include -#: field:account.invoice,price_type:0 -msgid "Price method" -msgstr "Método prezo" - -#. module: account_tax_include -#: model:ir.module.module,shortdesc:account_tax_include.module_meta_information -msgid "Invoices and prices with taxes included" -msgstr "Facturas e prezos con impostos incluÃdos" - -#. module: account_tax_include -#: selection:account.invoice,price_type:0 -msgid "Tax included" -msgstr "Imposto incluÃdo" - -#. module: account_tax_include -#: selection:account.invoice,price_type:0 -msgid "Tax excluded" -msgstr "Imposto excluÃdo" - -#. module: account_tax_include -#: view:account.tax:0 -msgid "Compute Code for Taxes included prices" -msgstr "Código para o cálculo dos impostos en prezos incluÃdos" - -#. module: account_tax_include -#: field:account.invoice.line,price_subtotal_incl:0 -msgid "Subtotal" -msgstr "Subtotal" diff --git a/addons/account_tax_include/i18n/hr.po b/addons/account_tax_include/i18n/hr.po deleted file mode 100644 index ba46ce2f95ab31e082da0e0bf00d98153fb54816..0000000000000000000000000000000000000000 --- a/addons/account_tax_include/i18n/hr.po +++ /dev/null @@ -1,52 +0,0 @@ -# Translation of OpenERP Server. -# This file contains the translation of the following modules: -# * account_tax_include -# -msgid "" -msgstr "" -"Project-Id-Version: OpenERP Server 6.0dev\n" -"Report-Msgid-Bugs-To: support@openerp.com\n" -"POT-Creation-Date: 2009-08-28 16:01+0000\n" -"PO-Revision-Date: 2010-08-02 23:43+0000\n" -"Last-Translator: Dragan Jovanovic <dragan.jovanovic@strojotex.com>\n" -"Language-Team: \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2010-09-29 05:00+0000\n" -"X-Generator: Launchpad (build Unknown)\n" - -#. module: account_tax_include -#: constraint:ir.ui.view:0 -msgid "Invalid XML for View Architecture!" -msgstr "Nevažeći XML za Arhitekturu Prikaza!" - -#. module: account_tax_include -#: field:account.invoice,price_type:0 -msgid "Price method" -msgstr "Cjenovna metoda" - -#. module: account_tax_include -#: model:ir.module.module,shortdesc:account_tax_include.module_meta_information -msgid "Invoices and prices with taxes included" -msgstr "RaÄuni i cijene sa ukljuÄenim porezom" - -#. module: account_tax_include -#: selection:account.invoice,price_type:0 -msgid "Tax included" -msgstr "Porez ukljuÄen" - -#. module: account_tax_include -#: selection:account.invoice,price_type:0 -msgid "Tax excluded" -msgstr "Nije ukljuÄen porez" - -#. module: account_tax_include -#: view:account.tax:0 -msgid "Compute Code for Taxes included prices" -msgstr "Kod za izraÄun cijena sa ukljuÄenim porezima" - -#. module: account_tax_include -#: field:account.invoice.line,price_subtotal_incl:0 -msgid "Subtotal" -msgstr "Podzbroj" diff --git a/addons/account_tax_include/i18n/hu.po b/addons/account_tax_include/i18n/hu.po deleted file mode 100644 index 5090a5e011f0d6adc49ff3d25f0680cccf9f9671..0000000000000000000000000000000000000000 --- a/addons/account_tax_include/i18n/hu.po +++ /dev/null @@ -1,52 +0,0 @@ -# Translation of OpenERP Server. -# This file contains the translation of the following modules: -# * account_tax_include -# -msgid "" -msgstr "" -"Project-Id-Version: OpenERP Server 5.0.4\n" -"Report-Msgid-Bugs-To: support@openerp.com\n" -"POT-Creation-Date: 2009-08-28 16:01+0000\n" -"PO-Revision-Date: 2009-02-03 06:24+0000\n" -"Last-Translator: <>\n" -"Language-Team: \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2010-09-29 05:00+0000\n" -"X-Generator: Launchpad (build Unknown)\n" - -#. module: account_tax_include -#: constraint:ir.ui.view:0 -msgid "Invalid XML for View Architecture!" -msgstr "" - -#. module: account_tax_include -#: field:account.invoice,price_type:0 -msgid "Price method" -msgstr "" - -#. module: account_tax_include -#: model:ir.module.module,shortdesc:account_tax_include.module_meta_information -msgid "Invoices and prices with taxes included" -msgstr "" - -#. module: account_tax_include -#: selection:account.invoice,price_type:0 -msgid "Tax included" -msgstr "" - -#. module: account_tax_include -#: selection:account.invoice,price_type:0 -msgid "Tax excluded" -msgstr "" - -#. module: account_tax_include -#: view:account.tax:0 -msgid "Compute Code for Taxes included prices" -msgstr "" - -#. module: account_tax_include -#: field:account.invoice.line,price_subtotal_incl:0 -msgid "Subtotal" -msgstr "" diff --git a/addons/account_tax_include/i18n/id.po b/addons/account_tax_include/i18n/id.po deleted file mode 100644 index e0d1f76a6b189c367ca60827b09f2ef6e210e6a3..0000000000000000000000000000000000000000 --- a/addons/account_tax_include/i18n/id.po +++ /dev/null @@ -1,52 +0,0 @@ -# Translation of OpenERP Server. -# This file contains the translation of the following modules: -# * account_tax_include -# -msgid "" -msgstr "" -"Project-Id-Version: OpenERP Server 6.0dev\n" -"Report-Msgid-Bugs-To: support@openerp.com\n" -"POT-Creation-Date: 2009-08-28 16:01+0000\n" -"PO-Revision-Date: 2010-08-02 14:41+0000\n" -"Last-Translator: mga (Open ERP) <Unknown>\n" -"Language-Team: \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2010-09-29 05:00+0000\n" -"X-Generator: Launchpad (build Unknown)\n" - -#. module: account_tax_include -#: constraint:ir.ui.view:0 -msgid "Invalid XML for View Architecture!" -msgstr "XML tidak valid untuk Menampilkan Arsitektur!" - -#. module: account_tax_include -#: field:account.invoice,price_type:0 -msgid "Price method" -msgstr "Metode Harga" - -#. module: account_tax_include -#: model:ir.module.module,shortdesc:account_tax_include.module_meta_information -msgid "Invoices and prices with taxes included" -msgstr "Faktur dan harga sudah termasuk pajak" - -#. module: account_tax_include -#: selection:account.invoice,price_type:0 -msgid "Tax included" -msgstr "Termasuk Pajak" - -#. module: account_tax_include -#: selection:account.invoice,price_type:0 -msgid "Tax excluded" -msgstr "Tidak termasuk pajak" - -#. module: account_tax_include -#: view:account.tax:0 -msgid "Compute Code for Taxes included prices" -msgstr "menghitung kode untuk Pajak termasuk harga" - -#. module: account_tax_include -#: field:account.invoice.line,price_subtotal_incl:0 -msgid "Subtotal" -msgstr "Sub Total" diff --git a/addons/account_tax_include/i18n/it.po b/addons/account_tax_include/i18n/it.po deleted file mode 100644 index 8b6d0f9df36e49ce7e36c146cb3a84d63da31cf8..0000000000000000000000000000000000000000 --- a/addons/account_tax_include/i18n/it.po +++ /dev/null @@ -1,52 +0,0 @@ -# Translation of OpenERP Server. -# This file contains the translation of the following modules: -# * account_tax_include -# -msgid "" -msgstr "" -"Project-Id-Version: OpenERP Server 5.0.4\n" -"Report-Msgid-Bugs-To: support@openerp.com\n" -"POT-Creation-Date: 2009-08-28 16:01+0000\n" -"PO-Revision-Date: 2010-10-14 07:31+0000\n" -"Last-Translator: OpenERP Administrators <Unknown>\n" -"Language-Team: \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2010-10-15 04:42+0000\n" -"X-Generator: Launchpad (build Unknown)\n" - -#. module: account_tax_include -#: constraint:ir.ui.view:0 -msgid "Invalid XML for View Architecture!" -msgstr "XML non valido per Visualizzazione Architettura!" - -#. module: account_tax_include -#: field:account.invoice,price_type:0 -msgid "Price method" -msgstr "Metodo di pagamento" - -#. module: account_tax_include -#: model:ir.module.module,shortdesc:account_tax_include.module_meta_information -msgid "Invoices and prices with taxes included" -msgstr "" - -#. module: account_tax_include -#: selection:account.invoice,price_type:0 -msgid "Tax included" -msgstr "Tasse incluse" - -#. module: account_tax_include -#: selection:account.invoice,price_type:0 -msgid "Tax excluded" -msgstr "Tasse escluse" - -#. module: account_tax_include -#: view:account.tax:0 -msgid "Compute Code for Taxes included prices" -msgstr "" - -#. module: account_tax_include -#: field:account.invoice.line,price_subtotal_incl:0 -msgid "Subtotal" -msgstr "Subtotale" diff --git a/addons/account_tax_include/i18n/ko.po b/addons/account_tax_include/i18n/ko.po deleted file mode 100644 index 254d3ffc1b160b1982cc5b197b21c8cbc26a6d24..0000000000000000000000000000000000000000 --- a/addons/account_tax_include/i18n/ko.po +++ /dev/null @@ -1,53 +0,0 @@ -# Korean translation for openobject-addons -# Copyright (c) 2009 Rosetta Contributors and Canonical Ltd 2009 -# This file is distributed under the same license as the openobject-addons package. -# FIRST AUTHOR <EMAIL@ADDRESS>, 2009. -# -msgid "" -msgstr "" -"Project-Id-Version: openobject-addons\n" -"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n" -"POT-Creation-Date: 2009-08-28 16:01+0000\n" -"PO-Revision-Date: 2009-09-08 16:43+0000\n" -"Last-Translator: ekodaq <ceo@ekosdaq.com>\n" -"Language-Team: Korean <ko@li.org>\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2010-09-29 05:00+0000\n" -"X-Generator: Launchpad (build Unknown)\n" - -#. module: account_tax_include -#: constraint:ir.ui.view:0 -msgid "Invalid XML for View Architecture!" -msgstr "ë·° 아키í…ì²˜ì˜ XMLì´ ìœ íš¨í•˜ì§€ 않습니다." - -#. module: account_tax_include -#: field:account.invoice,price_type:0 -msgid "Price method" -msgstr "가격 ë°©ì‹" - -#. module: account_tax_include -#: model:ir.module.module,shortdesc:account_tax_include.module_meta_information -msgid "Invoices and prices with taxes included" -msgstr "ì„¸ê¸ˆì´ í¬í•¨ëœ ì¸ë³´ì´ìŠ¤ì™€ 가격" - -#. module: account_tax_include -#: selection:account.invoice,price_type:0 -msgid "Tax included" -msgstr "세금 í¬í•¨" - -#. module: account_tax_include -#: selection:account.invoice,price_type:0 -msgid "Tax excluded" -msgstr "세금 ì œì™¸" - -#. module: account_tax_include -#: view:account.tax:0 -msgid "Compute Code for Taxes included prices" -msgstr "세금 í¬í•¨ ê°€ê²©ì„ ìœ„í•œ 컴퓨터 코드" - -#. module: account_tax_include -#: field:account.invoice.line,price_subtotal_incl:0 -msgid "Subtotal" -msgstr "ì„œë¸Œí† í„¸" diff --git a/addons/account_tax_include/i18n/lt.po b/addons/account_tax_include/i18n/lt.po deleted file mode 100644 index 35af6cdcb04de12e658e8d8e4871c88b36635e7e..0000000000000000000000000000000000000000 --- a/addons/account_tax_include/i18n/lt.po +++ /dev/null @@ -1,52 +0,0 @@ -# Translation of OpenERP Server. -# This file contains the translation of the following modules: -# * account_tax_include -# -msgid "" -msgstr "" -"Project-Id-Version: OpenERP Server 6.0dev\n" -"Report-Msgid-Bugs-To: support@openerp.com\n" -"POT-Creation-Date: 2009-08-28 16:01+0000\n" -"PO-Revision-Date: 2009-09-08 15:54+0000\n" -"Last-Translator: Donatas Stonys TeraxIT <donatelonow@hotmail.com>\n" -"Language-Team: \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2010-09-29 05:00+0000\n" -"X-Generator: Launchpad (build Unknown)\n" - -#. module: account_tax_include -#: constraint:ir.ui.view:0 -msgid "Invalid XML for View Architecture!" -msgstr "" - -#. module: account_tax_include -#: field:account.invoice,price_type:0 -msgid "Price method" -msgstr "" - -#. module: account_tax_include -#: model:ir.module.module,shortdesc:account_tax_include.module_meta_information -msgid "Invoices and prices with taxes included" -msgstr "" - -#. module: account_tax_include -#: selection:account.invoice,price_type:0 -msgid "Tax included" -msgstr "" - -#. module: account_tax_include -#: selection:account.invoice,price_type:0 -msgid "Tax excluded" -msgstr "" - -#. module: account_tax_include -#: view:account.tax:0 -msgid "Compute Code for Taxes included prices" -msgstr "" - -#. module: account_tax_include -#: field:account.invoice.line,price_subtotal_incl:0 -msgid "Subtotal" -msgstr "" diff --git a/addons/account_tax_include/i18n/nb.po b/addons/account_tax_include/i18n/nb.po deleted file mode 100644 index a457b6a3c4926d51a9dfc53c622ad22ec304b3dc..0000000000000000000000000000000000000000 --- a/addons/account_tax_include/i18n/nb.po +++ /dev/null @@ -1,53 +0,0 @@ -# Norwegian Bokmal 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 <EMAIL@ADDRESS>, 2010. -# -msgid "" -msgstr "" -"Project-Id-Version: openobject-addons\n" -"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n" -"POT-Creation-Date: 2009-08-28 16:01+0000\n" -"PO-Revision-Date: 2010-09-09 07:22+0000\n" -"Last-Translator: OpenERP Administrators <Unknown>\n" -"Language-Team: Norwegian Bokmal <nb@li.org>\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2010-09-29 05:00+0000\n" -"X-Generator: Launchpad (build Unknown)\n" - -#. module: account_tax_include -#: constraint:ir.ui.view:0 -msgid "Invalid XML for View Architecture!" -msgstr "Ugyldig XML for visningsarkitektur!" - -#. module: account_tax_include -#: field:account.invoice,price_type:0 -msgid "Price method" -msgstr "" - -#. module: account_tax_include -#: model:ir.module.module,shortdesc:account_tax_include.module_meta_information -msgid "Invoices and prices with taxes included" -msgstr "" - -#. module: account_tax_include -#: selection:account.invoice,price_type:0 -msgid "Tax included" -msgstr "" - -#. module: account_tax_include -#: selection:account.invoice,price_type:0 -msgid "Tax excluded" -msgstr "" - -#. module: account_tax_include -#: view:account.tax:0 -msgid "Compute Code for Taxes included prices" -msgstr "" - -#. module: account_tax_include -#: field:account.invoice.line,price_subtotal_incl:0 -msgid "Subtotal" -msgstr "Subtotal" diff --git a/addons/account_tax_include/i18n/nl.po b/addons/account_tax_include/i18n/nl.po deleted file mode 100644 index cfccf0663d4beae1a82f55a1eded3ed580e2799b..0000000000000000000000000000000000000000 --- a/addons/account_tax_include/i18n/nl.po +++ /dev/null @@ -1,52 +0,0 @@ -# Translation of OpenERP Server. -# This file contains the translation of the following modules: -# * account_tax_include -# -msgid "" -msgstr "" -"Project-Id-Version: OpenERP Server 6.0dev\n" -"Report-Msgid-Bugs-To: support@openerp.com\n" -"POT-Creation-Date: 2009-08-28 16:01+0000\n" -"PO-Revision-Date: 2009-12-14 21:11+0000\n" -"Last-Translator: Pieter J. Kersten (EduSense BV) <Unknown>\n" -"Language-Team: \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2010-09-29 05:00+0000\n" -"X-Generator: Launchpad (build Unknown)\n" - -#. module: account_tax_include -#: constraint:ir.ui.view:0 -msgid "Invalid XML for View Architecture!" -msgstr "Ongeldige XML voor weergave!" - -#. module: account_tax_include -#: field:account.invoice,price_type:0 -msgid "Price method" -msgstr "Prijsmethode" - -#. module: account_tax_include -#: model:ir.module.module,shortdesc:account_tax_include.module_meta_information -msgid "Invoices and prices with taxes included" -msgstr "Facturen en prijzen inclusief belastingen" - -#. module: account_tax_include -#: selection:account.invoice,price_type:0 -msgid "Tax included" -msgstr "Inclusief belastingen" - -#. module: account_tax_include -#: selection:account.invoice,price_type:0 -msgid "Tax excluded" -msgstr "Exclusief belastingen" - -#. module: account_tax_include -#: view:account.tax:0 -msgid "Compute Code for Taxes included prices" -msgstr "Bereken code voor prijzen inclusief belastingen" - -#. module: account_tax_include -#: field:account.invoice.line,price_subtotal_incl:0 -msgid "Subtotal" -msgstr "Subtotaal" diff --git a/addons/account_tax_include/i18n/nl_BE.po b/addons/account_tax_include/i18n/nl_BE.po deleted file mode 100644 index 68a51f90ec3a2f1e64d2a19abbea268b6d5bc261..0000000000000000000000000000000000000000 --- a/addons/account_tax_include/i18n/nl_BE.po +++ /dev/null @@ -1,52 +0,0 @@ -# Translation of OpenERP Server. -# This file contains the translation of the following modules: -# * account_tax_include -# -msgid "" -msgstr "" -"Project-Id-Version: OpenERP Server 5.0.0\n" -"Report-Msgid-Bugs-To: support@openerp.com\n" -"POT-Creation-Date: 2009-08-28 16:01+0000\n" -"PO-Revision-Date: 2009-04-24 15:12+0000\n" -"Last-Translator: <>\n" -"Language-Team: \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2010-09-29 05:00+0000\n" -"X-Generator: Launchpad (build Unknown)\n" - -#. module: account_tax_include -#: constraint:ir.ui.view:0 -msgid "Invalid XML for View Architecture!" -msgstr "" - -#. module: account_tax_include -#: field:account.invoice,price_type:0 -msgid "Price method" -msgstr "" - -#. module: account_tax_include -#: model:ir.module.module,shortdesc:account_tax_include.module_meta_information -msgid "Invoices and prices with taxes included" -msgstr "" - -#. module: account_tax_include -#: selection:account.invoice,price_type:0 -msgid "Tax included" -msgstr "" - -#. module: account_tax_include -#: selection:account.invoice,price_type:0 -msgid "Tax excluded" -msgstr "" - -#. module: account_tax_include -#: view:account.tax:0 -msgid "Compute Code for Taxes included prices" -msgstr "" - -#. module: account_tax_include -#: field:account.invoice.line,price_subtotal_incl:0 -msgid "Subtotal" -msgstr "" diff --git a/addons/account_tax_include/i18n/oc.po b/addons/account_tax_include/i18n/oc.po deleted file mode 100644 index 95700dc830e24617099938790b6530f8d7f102b9..0000000000000000000000000000000000000000 --- a/addons/account_tax_include/i18n/oc.po +++ /dev/null @@ -1,53 +0,0 @@ -# Occitan (post 1500) 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 <EMAIL@ADDRESS>, 2010. -# -msgid "" -msgstr "" -"Project-Id-Version: openobject-addons\n" -"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n" -"POT-Creation-Date: 2009-08-28 16:01+0000\n" -"PO-Revision-Date: 2010-08-02 23:48+0000\n" -"Last-Translator: Cédric VALMARY (Tot en òc) <cvalmary@yahoo.fr>\n" -"Language-Team: Occitan (post 1500) <oc@li.org>\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2010-09-29 05:00+0000\n" -"X-Generator: Launchpad (build Unknown)\n" - -#. module: account_tax_include -#: constraint:ir.ui.view:0 -msgid "Invalid XML for View Architecture!" -msgstr "XML invalid per l'arquitectura de la vista" - -#. module: account_tax_include -#: field:account.invoice,price_type:0 -msgid "Price method" -msgstr "Metòde de prètz" - -#. module: account_tax_include -#: model:ir.module.module,shortdesc:account_tax_include.module_meta_information -msgid "Invoices and prices with taxes included" -msgstr "Facturas e prèses amb taxas inclusas" - -#. module: account_tax_include -#: selection:account.invoice,price_type:0 -msgid "Tax included" -msgstr "Taxa inclusa" - -#. module: account_tax_include -#: selection:account.invoice,price_type:0 -msgid "Tax excluded" -msgstr "Fòra taxa" - -#. module: account_tax_include -#: view:account.tax:0 -msgid "Compute Code for Taxes included prices" -msgstr "Còde de calcul pels prèses amb taxas compresas" - -#. module: account_tax_include -#: field:account.invoice.line,price_subtotal_incl:0 -msgid "Subtotal" -msgstr "Sostotal" diff --git a/addons/account_tax_include/i18n/pl.po b/addons/account_tax_include/i18n/pl.po deleted file mode 100644 index efa5a2bfdfb951bc1b79fba964a4662d24fcb25d..0000000000000000000000000000000000000000 --- a/addons/account_tax_include/i18n/pl.po +++ /dev/null @@ -1,52 +0,0 @@ -# Translation of OpenERP Server. -# This file contains the translation of the following modules: -# * account_tax_include -# -msgid "" -msgstr "" -"Project-Id-Version: OpenERP Server 6.0dev\n" -"Report-Msgid-Bugs-To: support@openerp.com\n" -"POT-Creation-Date: 2009-08-28 16:01+0000\n" -"PO-Revision-Date: 2009-11-21 15:43+0000\n" -"Last-Translator: Andrzej MoST (Marcin Ostajewski) <Unknown>\n" -"Language-Team: \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2010-09-29 05:00+0000\n" -"X-Generator: Launchpad (build Unknown)\n" - -#. module: account_tax_include -#: constraint:ir.ui.view:0 -msgid "Invalid XML for View Architecture!" -msgstr "XML niewÅ‚aÅ›ciwy dla tej architektury wyÅ›wietlania!" - -#. module: account_tax_include -#: field:account.invoice,price_type:0 -msgid "Price method" -msgstr "Metoda wyceny" - -#. module: account_tax_include -#: model:ir.module.module,shortdesc:account_tax_include.module_meta_information -msgid "Invoices and prices with taxes included" -msgstr "Faktury i ceny zawierajÄ…ce podatki." - -#. module: account_tax_include -#: selection:account.invoice,price_type:0 -msgid "Tax included" -msgstr "Zawiera podatek" - -#. module: account_tax_include -#: selection:account.invoice,price_type:0 -msgid "Tax excluded" -msgstr "Nie zawiera podatku" - -#. module: account_tax_include -#: view:account.tax:0 -msgid "Compute Code for Taxes included prices" -msgstr "Wylicz kod dla cen z podatkiem" - -#. module: account_tax_include -#: field:account.invoice.line,price_subtotal_incl:0 -msgid "Subtotal" -msgstr "Suma częściowa" diff --git a/addons/account_tax_include/i18n/pt.po b/addons/account_tax_include/i18n/pt.po deleted file mode 100644 index 9f5c11b9832e15d61375ee43961e30f6fbde988e..0000000000000000000000000000000000000000 --- a/addons/account_tax_include/i18n/pt.po +++ /dev/null @@ -1,52 +0,0 @@ -# Translation of OpenERP Server. -# This file contains the translation of the following modules: -# * account_tax_include -# -msgid "" -msgstr "" -"Project-Id-Version: OpenERP Server 6.0dev\n" -"Report-Msgid-Bugs-To: support@openerp.com\n" -"POT-Creation-Date: 2009-08-28 16:01+0000\n" -"PO-Revision-Date: 2010-08-02 23:49+0000\n" -"Last-Translator: mga (Open ERP) <Unknown>\n" -"Language-Team: \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2010-09-29 05:00+0000\n" -"X-Generator: Launchpad (build Unknown)\n" - -#. module: account_tax_include -#: constraint:ir.ui.view:0 -msgid "Invalid XML for View Architecture!" -msgstr "XML inválido para a arquitectura da vista" - -#. module: account_tax_include -#: field:account.invoice,price_type:0 -msgid "Price method" -msgstr "Método do preço" - -#. module: account_tax_include -#: model:ir.module.module,shortdesc:account_tax_include.module_meta_information -msgid "Invoices and prices with taxes included" -msgstr "Facturas e preços com imposto incluÃdo" - -#. module: account_tax_include -#: selection:account.invoice,price_type:0 -msgid "Tax included" -msgstr "Imposto incluÃdo" - -#. module: account_tax_include -#: selection:account.invoice,price_type:0 -msgid "Tax excluded" -msgstr "Imposto excluÃdo" - -#. module: account_tax_include -#: view:account.tax:0 -msgid "Compute Code for Taxes included prices" -msgstr "Código de cálculo para preços com imposto incluÃdo" - -#. module: account_tax_include -#: field:account.invoice.line,price_subtotal_incl:0 -msgid "Subtotal" -msgstr "Subtotal" diff --git a/addons/account_tax_include/i18n/pt_BR.po b/addons/account_tax_include/i18n/pt_BR.po deleted file mode 100644 index bd8ff06c8e4836d4954a237d33a652f8b15fa801..0000000000000000000000000000000000000000 --- a/addons/account_tax_include/i18n/pt_BR.po +++ /dev/null @@ -1,52 +0,0 @@ -# Translation of OpenERP Server. -# This file contains the translation of the following modules: -# * account_tax_include -# -msgid "" -msgstr "" -"Project-Id-Version: OpenERP Server 6.0dev\n" -"Report-Msgid-Bugs-To: support@openerp.com\n" -"POT-Creation-Date: 2009-08-28 16:01+0000\n" -"PO-Revision-Date: 2009-09-08 12:28+0000\n" -"Last-Translator: Pedro_Maschio <pedro.bicudo@tgtconsult.com.br>\n" -"Language-Team: \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2010-09-29 05:00+0000\n" -"X-Generator: Launchpad (build Unknown)\n" - -#. module: account_tax_include -#: constraint:ir.ui.view:0 -msgid "Invalid XML for View Architecture!" -msgstr "Invalido XML para Arquitetura da View" - -#. module: account_tax_include -#: field:account.invoice,price_type:0 -msgid "Price method" -msgstr "" - -#. module: account_tax_include -#: model:ir.module.module,shortdesc:account_tax_include.module_meta_information -msgid "Invoices and prices with taxes included" -msgstr "" - -#. module: account_tax_include -#: selection:account.invoice,price_type:0 -msgid "Tax included" -msgstr "" - -#. module: account_tax_include -#: selection:account.invoice,price_type:0 -msgid "Tax excluded" -msgstr "" - -#. module: account_tax_include -#: view:account.tax:0 -msgid "Compute Code for Taxes included prices" -msgstr "" - -#. module: account_tax_include -#: field:account.invoice.line,price_subtotal_incl:0 -msgid "Subtotal" -msgstr "" diff --git a/addons/account_tax_include/i18n/ro.po b/addons/account_tax_include/i18n/ro.po deleted file mode 100644 index c6c5a81169c197beec41bd910d74ecf8c6e2ca54..0000000000000000000000000000000000000000 --- a/addons/account_tax_include/i18n/ro.po +++ /dev/null @@ -1,52 +0,0 @@ -# Translation of OpenERP Server. -# This file contains the translation of the following modules: -# * account_tax_include -# -msgid "" -msgstr "" -"Project-Id-Version: OpenERP Server 6.0dev\n" -"Report-Msgid-Bugs-To: support@openerp.com\n" -"POT-Creation-Date: 2009-08-28 16:01+0000\n" -"PO-Revision-Date: 2010-08-02 23:52+0000\n" -"Last-Translator: mga (Open ERP) <Unknown>\n" -"Language-Team: \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2010-09-29 05:00+0000\n" -"X-Generator: Launchpad (build Unknown)\n" - -#. module: account_tax_include -#: constraint:ir.ui.view:0 -msgid "Invalid XML for View Architecture!" -msgstr "XML invalid pentru arhitectura machetei de afiÈ™are !" - -#. module: account_tax_include -#: field:account.invoice,price_type:0 -msgid "Price method" -msgstr "Metoda de pret" - -#. module: account_tax_include -#: model:ir.module.module,shortdesc:account_tax_include.module_meta_information -msgid "Invoices and prices with taxes included" -msgstr "Facturi ÅŸi preÅ£uri cu taxele incluse" - -#. module: account_tax_include -#: selection:account.invoice,price_type:0 -msgid "Tax included" -msgstr "Taxe incluse" - -#. module: account_tax_include -#: selection:account.invoice,price_type:0 -msgid "Tax excluded" -msgstr "Fără taxe" - -#. module: account_tax_include -#: view:account.tax:0 -msgid "Compute Code for Taxes included prices" -msgstr "Calcul cod pentru preÅ£uri cu taxe incluse" - -#. module: account_tax_include -#: field:account.invoice.line,price_subtotal_incl:0 -msgid "Subtotal" -msgstr "Subtotal" diff --git a/addons/account_tax_include/i18n/ru.po b/addons/account_tax_include/i18n/ru.po deleted file mode 100644 index 0d7efd3ffdfb8d6c6f832b26f0964b5deea9ea1a..0000000000000000000000000000000000000000 --- a/addons/account_tax_include/i18n/ru.po +++ /dev/null @@ -1,52 +0,0 @@ -# Translation of OpenERP Server. -# This file contains the translation of the following modules: -# * account_tax_include -# -msgid "" -msgstr "" -"Project-Id-Version: OpenERP Server 6.0dev\n" -"Report-Msgid-Bugs-To: support@openerp.com\n" -"POT-Creation-Date: 2009-08-28 16:01+0000\n" -"PO-Revision-Date: 2010-06-06 06:51+0000\n" -"Last-Translator: mr.The <Unknown>\n" -"Language-Team: \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2010-09-29 05:00+0000\n" -"X-Generator: Launchpad (build Unknown)\n" - -#. module: account_tax_include -#: constraint:ir.ui.view:0 -msgid "Invalid XML for View Architecture!" -msgstr "Ðеправильный XML Ð´Ð»Ñ Ð¿Ñ€Ð¾Ñмотра архитектуры!" - -#. module: account_tax_include -#: field:account.invoice,price_type:0 -msgid "Price method" -msgstr "Метод раÑчета цены" - -#. module: account_tax_include -#: model:ir.module.module,shortdesc:account_tax_include.module_meta_information -msgid "Invoices and prices with taxes included" -msgstr "Счета и цены Ñ Ð½Ð°Ð»Ð¾Ð³Ð°Ð¼Ð¸" - -#. module: account_tax_include -#: selection:account.invoice,price_type:0 -msgid "Tax included" -msgstr "С налогами" - -#. module: account_tax_include -#: selection:account.invoice,price_type:0 -msgid "Tax excluded" -msgstr "До налогов" - -#. module: account_tax_include -#: view:account.tax:0 -msgid "Compute Code for Taxes included prices" -msgstr "Выполнить код Ð´Ð»Ñ Ñ†ÐµÐ½ Ñ Ð½Ð°Ð»Ð¾Ð³Ð°Ð¼Ð¸" - -#. module: account_tax_include -#: field:account.invoice.line,price_subtotal_incl:0 -msgid "Subtotal" -msgstr "Промежуточный итог" diff --git a/addons/account_tax_include/i18n/sk.po b/addons/account_tax_include/i18n/sk.po deleted file mode 100644 index eedd88d3edc04fcce8713548787d4211ac0f7689..0000000000000000000000000000000000000000 --- a/addons/account_tax_include/i18n/sk.po +++ /dev/null @@ -1,53 +0,0 @@ -# Slovak 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 <EMAIL@ADDRESS>, 2010. -# -msgid "" -msgstr "" -"Project-Id-Version: openobject-addons\n" -"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n" -"POT-Creation-Date: 2009-08-28 16:01+0000\n" -"PO-Revision-Date: 2010-08-02 23:53+0000\n" -"Last-Translator: Peter Kohaut <peter.kohaut@gmail.com>\n" -"Language-Team: Slovak <sk@li.org>\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2010-09-29 05:00+0000\n" -"X-Generator: Launchpad (build Unknown)\n" - -#. module: account_tax_include -#: constraint:ir.ui.view:0 -msgid "Invalid XML for View Architecture!" -msgstr "Neplatné XML pre zobrazenie architektúry!" - -#. module: account_tax_include -#: field:account.invoice,price_type:0 -msgid "Price method" -msgstr "" - -#. module: account_tax_include -#: model:ir.module.module,shortdesc:account_tax_include.module_meta_information -msgid "Invoices and prices with taxes included" -msgstr "Faktúry a ceny zahrnuté s DPH" - -#. module: account_tax_include -#: selection:account.invoice,price_type:0 -msgid "Tax included" -msgstr "" - -#. module: account_tax_include -#: selection:account.invoice,price_type:0 -msgid "Tax excluded" -msgstr "" - -#. module: account_tax_include -#: view:account.tax:0 -msgid "Compute Code for Taxes included prices" -msgstr "" - -#. module: account_tax_include -#: field:account.invoice.line,price_subtotal_incl:0 -msgid "Subtotal" -msgstr "MedzisúÄet" diff --git a/addons/account_tax_include/i18n/sl.po b/addons/account_tax_include/i18n/sl.po deleted file mode 100644 index 22db03c58942c476c69308dffd321070e43a733a..0000000000000000000000000000000000000000 --- a/addons/account_tax_include/i18n/sl.po +++ /dev/null @@ -1,52 +0,0 @@ -# Translation of OpenERP Server. -# This file contains the translation of the following modules: -# * account_tax_include -# -msgid "" -msgstr "" -"Project-Id-Version: OpenERP Server 6.0dev\n" -"Report-Msgid-Bugs-To: support@openerp.com\n" -"POT-Creation-Date: 2009-08-28 16:01+0000\n" -"PO-Revision-Date: 2009-11-17 09:23+0000\n" -"Last-Translator: Fabien (Open ERP) <fp@tinyerp.com>\n" -"Language-Team: \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2010-09-29 05:00+0000\n" -"X-Generator: Launchpad (build Unknown)\n" - -#. module: account_tax_include -#: constraint:ir.ui.view:0 -msgid "Invalid XML for View Architecture!" -msgstr "Neveljaven XML za arhitekturo pogleda." - -#. module: account_tax_include -#: field:account.invoice,price_type:0 -msgid "Price method" -msgstr "Metoda cene" - -#. module: account_tax_include -#: model:ir.module.module,shortdesc:account_tax_include.module_meta_information -msgid "Invoices and prices with taxes included" -msgstr "RaÄuni in cene z vkljuÄenimi davki" - -#. module: account_tax_include -#: selection:account.invoice,price_type:0 -msgid "Tax included" -msgstr "Davek vkljuÄen" - -#. module: account_tax_include -#: selection:account.invoice,price_type:0 -msgid "Tax excluded" -msgstr "Davek ni vkljuÄen" - -#. module: account_tax_include -#: view:account.tax:0 -msgid "Compute Code for Taxes included prices" -msgstr "Koda izraÄuna za davke v cenah" - -#. module: account_tax_include -#: field:account.invoice.line,price_subtotal_incl:0 -msgid "Subtotal" -msgstr "Delna vsota" diff --git a/addons/account_tax_include/i18n/sq.po b/addons/account_tax_include/i18n/sq.po deleted file mode 100644 index 7c7b2189fd25d7340bbbfe1d8eef2bd00d61b01d..0000000000000000000000000000000000000000 --- a/addons/account_tax_include/i18n/sq.po +++ /dev/null @@ -1,53 +0,0 @@ -# Albanian 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 <EMAIL@ADDRESS>, 2010. -# -msgid "" -msgstr "" -"Project-Id-Version: openobject-addons\n" -"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n" -"POT-Creation-Date: 2009-08-28 16:01+0000\n" -"PO-Revision-Date: 2010-08-02 14:41+0000\n" -"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" -"Language-Team: Albanian <sq@li.org>\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2010-09-29 05:00+0000\n" -"X-Generator: Launchpad (build Unknown)\n" - -#. module: account_tax_include -#: constraint:ir.ui.view:0 -msgid "Invalid XML for View Architecture!" -msgstr "" - -#. module: account_tax_include -#: field:account.invoice,price_type:0 -msgid "Price method" -msgstr "" - -#. module: account_tax_include -#: model:ir.module.module,shortdesc:account_tax_include.module_meta_information -msgid "Invoices and prices with taxes included" -msgstr "" - -#. module: account_tax_include -#: selection:account.invoice,price_type:0 -msgid "Tax included" -msgstr "" - -#. module: account_tax_include -#: selection:account.invoice,price_type:0 -msgid "Tax excluded" -msgstr "" - -#. module: account_tax_include -#: view:account.tax:0 -msgid "Compute Code for Taxes included prices" -msgstr "" - -#. module: account_tax_include -#: field:account.invoice.line,price_subtotal_incl:0 -msgid "Subtotal" -msgstr "" diff --git a/addons/account_tax_include/i18n/sr.po b/addons/account_tax_include/i18n/sr.po deleted file mode 100644 index bfcc7a710050a717ca0176e9971cefa278ae7e4b..0000000000000000000000000000000000000000 --- a/addons/account_tax_include/i18n/sr.po +++ /dev/null @@ -1,53 +0,0 @@ -# Serbian 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 <EMAIL@ADDRESS>, 2010. -# -msgid "" -msgstr "" -"Project-Id-Version: openobject-addons\n" -"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n" -"POT-Creation-Date: 2009-08-28 16:01+0000\n" -"PO-Revision-Date: 2010-10-15 08:46+0000\n" -"Last-Translator: OpenERP Administrators <Unknown>\n" -"Language-Team: Serbian <sr@li.org>\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2010-10-16 04:47+0000\n" -"X-Generator: Launchpad (build Unknown)\n" - -#. module: account_tax_include -#: constraint:ir.ui.view:0 -msgid "Invalid XML for View Architecture!" -msgstr "Nevažeći XML za pregled arhitekture" - -#. module: account_tax_include -#: field:account.invoice,price_type:0 -msgid "Price method" -msgstr "Cenovna metoda" - -#. module: account_tax_include -#: model:ir.module.module,shortdesc:account_tax_include.module_meta_information -msgid "Invoices and prices with taxes included" -msgstr "RaÄuni i cene sa ukljuÄenim porezom" - -#. module: account_tax_include -#: selection:account.invoice,price_type:0 -msgid "Tax included" -msgstr "Porez ukljuÄen" - -#. module: account_tax_include -#: selection:account.invoice,price_type:0 -msgid "Tax excluded" -msgstr "Nije ukljuÄen porez" - -#. module: account_tax_include -#: view:account.tax:0 -msgid "Compute Code for Taxes included prices" -msgstr "Kompjuterski kod za izraÄunavanje cijena sa ukljuÄenim porezima" - -#. module: account_tax_include -#: field:account.invoice.line,price_subtotal_incl:0 -msgid "Subtotal" -msgstr "Subtotal" diff --git a/addons/account_tax_include/i18n/sv.po b/addons/account_tax_include/i18n/sv.po deleted file mode 100644 index 30a63ed1824c2520074684954a906f434ac4e42c..0000000000000000000000000000000000000000 --- a/addons/account_tax_include/i18n/sv.po +++ /dev/null @@ -1,52 +0,0 @@ -# Translation of OpenERP Server. -# This file contains the translation of the following modules: -# * account_tax_include -# -msgid "" -msgstr "" -"Project-Id-Version: OpenERP Server 6.0dev\n" -"Report-Msgid-Bugs-To: support@openerp.com\n" -"POT-Creation-Date: 2009-08-28 16:01+0000\n" -"PO-Revision-Date: 2010-08-03 02:42+0000\n" -"Last-Translator: mga (Open ERP) <Unknown>\n" -"Language-Team: \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2010-09-29 05:00+0000\n" -"X-Generator: Launchpad (build Unknown)\n" - -#. module: account_tax_include -#: constraint:ir.ui.view:0 -msgid "Invalid XML for View Architecture!" -msgstr "Felaktig XML för Vyarkitektur!" - -#. module: account_tax_include -#: field:account.invoice,price_type:0 -msgid "Price method" -msgstr "" - -#. module: account_tax_include -#: model:ir.module.module,shortdesc:account_tax_include.module_meta_information -msgid "Invoices and prices with taxes included" -msgstr "" - -#. module: account_tax_include -#: selection:account.invoice,price_type:0 -msgid "Tax included" -msgstr "" - -#. module: account_tax_include -#: selection:account.invoice,price_type:0 -msgid "Tax excluded" -msgstr "" - -#. module: account_tax_include -#: view:account.tax:0 -msgid "Compute Code for Taxes included prices" -msgstr "" - -#. module: account_tax_include -#: field:account.invoice.line,price_subtotal_incl:0 -msgid "Subtotal" -msgstr "" diff --git a/addons/account_tax_include/i18n/tlh.po b/addons/account_tax_include/i18n/tlh.po deleted file mode 100644 index 334e888d03d3e73d0916bbcd82dde49a84e7de99..0000000000000000000000000000000000000000 --- a/addons/account_tax_include/i18n/tlh.po +++ /dev/null @@ -1,52 +0,0 @@ -# Translation of OpenERP Server. -# This file contains the translation of the following modules: -# * account_tax_include -# -msgid "" -msgstr "" -"Project-Id-Version: OpenERP Server 6.0dev_rc3\n" -"Report-Msgid-Bugs-To: support@openerp.com\n" -"POT-Creation-Date: 2009-08-28 16:01+0000\n" -"PO-Revision-Date: 2009-02-03 06:24+0000\n" -"Last-Translator: <>\n" -"Language-Team: \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2010-09-29 05:00+0000\n" -"X-Generator: Launchpad (build Unknown)\n" - -#. module: account_tax_include -#: constraint:ir.ui.view:0 -msgid "Invalid XML for View Architecture!" -msgstr "" - -#. module: account_tax_include -#: field:account.invoice,price_type:0 -msgid "Price method" -msgstr "" - -#. module: account_tax_include -#: model:ir.module.module,shortdesc:account_tax_include.module_meta_information -msgid "Invoices and prices with taxes included" -msgstr "" - -#. module: account_tax_include -#: selection:account.invoice,price_type:0 -msgid "Tax included" -msgstr "" - -#. module: account_tax_include -#: selection:account.invoice,price_type:0 -msgid "Tax excluded" -msgstr "" - -#. module: account_tax_include -#: view:account.tax:0 -msgid "Compute Code for Taxes included prices" -msgstr "" - -#. module: account_tax_include -#: field:account.invoice.line,price_subtotal_incl:0 -msgid "Subtotal" -msgstr "" diff --git a/addons/account_tax_include/i18n/tr.po b/addons/account_tax_include/i18n/tr.po deleted file mode 100644 index a719aaf1b2b745126929446002a032206eb7e32a..0000000000000000000000000000000000000000 --- a/addons/account_tax_include/i18n/tr.po +++ /dev/null @@ -1,52 +0,0 @@ -# Translation of OpenERP Server. -# This file contains the translation of the following modules: -# * account_tax_include -# -msgid "" -msgstr "" -"Project-Id-Version: OpenERP Server 6.0dev\n" -"Report-Msgid-Bugs-To: support@openerp.com\n" -"POT-Creation-Date: 2009-08-28 16:01+0000\n" -"PO-Revision-Date: 2010-09-09 06:58+0000\n" -"Last-Translator: Fabien (Open ERP) <fp@tinyerp.com>\n" -"Language-Team: \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2010-09-29 05:00+0000\n" -"X-Generator: Launchpad (build Unknown)\n" - -#. module: account_tax_include -#: constraint:ir.ui.view:0 -msgid "Invalid XML for View Architecture!" -msgstr "Görüntüleme mimarisi için Geçersiz XML" - -#. module: account_tax_include -#: field:account.invoice,price_type:0 -msgid "Price method" -msgstr "Fiyat Yöntemi" - -#. module: account_tax_include -#: model:ir.module.module,shortdesc:account_tax_include.module_meta_information -msgid "Invoices and prices with taxes included" -msgstr "Vergiler dahil fiyat ve faturalar" - -#. module: account_tax_include -#: selection:account.invoice,price_type:0 -msgid "Tax included" -msgstr "KDV Dahil" - -#. module: account_tax_include -#: selection:account.invoice,price_type:0 -msgid "Tax excluded" -msgstr "KDV Hariç" - -#. module: account_tax_include -#: view:account.tax:0 -msgid "Compute Code for Taxes included prices" -msgstr "" - -#. module: account_tax_include -#: field:account.invoice.line,price_subtotal_incl:0 -msgid "Subtotal" -msgstr "Alt Toplam" diff --git a/addons/account_tax_include/i18n/uk.po b/addons/account_tax_include/i18n/uk.po deleted file mode 100644 index 8b467132fb9dda3b55f43ec896333be55b82d186..0000000000000000000000000000000000000000 --- a/addons/account_tax_include/i18n/uk.po +++ /dev/null @@ -1,52 +0,0 @@ -# Translation of OpenERP Server. -# This file contains the translation of the following modules: -# * account_tax_include -# -msgid "" -msgstr "" -"Project-Id-Version: OpenERP Server 6.0dev\n" -"Report-Msgid-Bugs-To: support@openerp.com\n" -"POT-Creation-Date: 2009-08-28 16:01+0000\n" -"PO-Revision-Date: 2009-09-08 15:16+0000\n" -"Last-Translator: Eugene Babiy <eugene.babiy@gmail.com>\n" -"Language-Team: \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2010-09-29 05:00+0000\n" -"X-Generator: Launchpad (build Unknown)\n" - -#. module: account_tax_include -#: constraint:ir.ui.view:0 -msgid "Invalid XML for View Architecture!" -msgstr "Ðеправильний XML Ð´Ð»Ñ Ðрхітектури ВиглÑду!" - -#. module: account_tax_include -#: field:account.invoice,price_type:0 -msgid "Price method" -msgstr "" - -#. module: account_tax_include -#: model:ir.module.module,shortdesc:account_tax_include.module_meta_information -msgid "Invoices and prices with taxes included" -msgstr "" - -#. module: account_tax_include -#: selection:account.invoice,price_type:0 -msgid "Tax included" -msgstr "" - -#. module: account_tax_include -#: selection:account.invoice,price_type:0 -msgid "Tax excluded" -msgstr "" - -#. module: account_tax_include -#: view:account.tax:0 -msgid "Compute Code for Taxes included prices" -msgstr "" - -#. module: account_tax_include -#: field:account.invoice.line,price_subtotal_incl:0 -msgid "Subtotal" -msgstr "" diff --git a/addons/account_tax_include/i18n/vi.po b/addons/account_tax_include/i18n/vi.po deleted file mode 100644 index 055c258190160d1fd1b1562c6f60c3d9c839fbf1..0000000000000000000000000000000000000000 --- a/addons/account_tax_include/i18n/vi.po +++ /dev/null @@ -1,53 +0,0 @@ -# Vietnamese 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 <EMAIL@ADDRESS>, 2010. -# -msgid "" -msgstr "" -"Project-Id-Version: openobject-addons\n" -"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n" -"POT-Creation-Date: 2009-08-28 16:01+0000\n" -"PO-Revision-Date: 2010-08-02 14:41+0000\n" -"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" -"Language-Team: Vietnamese <vi@li.org>\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2010-09-29 05:00+0000\n" -"X-Generator: Launchpad (build Unknown)\n" - -#. module: account_tax_include -#: constraint:ir.ui.view:0 -msgid "Invalid XML for View Architecture!" -msgstr "" - -#. module: account_tax_include -#: field:account.invoice,price_type:0 -msgid "Price method" -msgstr "" - -#. module: account_tax_include -#: model:ir.module.module,shortdesc:account_tax_include.module_meta_information -msgid "Invoices and prices with taxes included" -msgstr "" - -#. module: account_tax_include -#: selection:account.invoice,price_type:0 -msgid "Tax included" -msgstr "" - -#. module: account_tax_include -#: selection:account.invoice,price_type:0 -msgid "Tax excluded" -msgstr "" - -#. module: account_tax_include -#: view:account.tax:0 -msgid "Compute Code for Taxes included prices" -msgstr "" - -#. module: account_tax_include -#: field:account.invoice.line,price_subtotal_incl:0 -msgid "Subtotal" -msgstr "" diff --git a/addons/account_tax_include/i18n/zh_CN.po b/addons/account_tax_include/i18n/zh_CN.po deleted file mode 100644 index b5ed33802aeb92cddb99e46fc1c451b5ade06c4e..0000000000000000000000000000000000000000 --- a/addons/account_tax_include/i18n/zh_CN.po +++ /dev/null @@ -1,63 +0,0 @@ -# Translation of OpenERP Server. -# This file contains the translation of the following modules: -# * account_tax_include -# -msgid "" -msgstr "" -"Project-Id-Version: OpenERP Server 6.0dev\n" -"Report-Msgid-Bugs-To: support@openerp.com\n" -"POT-Creation-Date: 2009-08-28 16:01+0000\n" -"PO-Revision-Date: 2010-07-13 16:34+0000\n" -"Last-Translator: Black Jack <onetimespeed@hotmail.com>\n" -"Language-Team: \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2010-09-29 05:00+0000\n" -"X-Generator: Launchpad (build Unknown)\n" - -#. module: account_tax_include -#: constraint:ir.ui.view:0 -msgid "Invalid XML for View Architecture!" -msgstr "æ— æ•ˆXML视图结构!" - -#. module: account_tax_include -#: field:account.invoice,price_type:0 -msgid "Price method" -msgstr "ä»·æ ¼è§„åˆ™" - -#. module: account_tax_include -#: model:ir.module.module,shortdesc:account_tax_include.module_meta_information -msgid "Invoices and prices with taxes included" -msgstr "å‘票和å«ç¨Žä»·" - -#. module: account_tax_include -#: selection:account.invoice,price_type:0 -msgid "Tax included" -msgstr "å«ç¨Ž" - -#. module: account_tax_include -#: selection:account.invoice,price_type:0 -msgid "Tax excluded" -msgstr "ä¸å«ç¨Ž" - -#. module: account_tax_include -#: view:account.tax:0 -msgid "Compute Code for Taxes included prices" -msgstr "å«ç¨Žä»·æ ¼è®¡ç®—代ç " - -#. module: account_tax_include -#: field:account.invoice.line,price_subtotal_incl:0 -msgid "Subtotal" -msgstr "å°è®¡" - -#~ msgid "" -#~ "Allow the user to work tax included prices.\n" -#~ "Especially useful for b2c businesses.\n" -#~ " \n" -#~ "This module implement the modification on the invoice form.\n" -#~ msgstr "" -#~ "å…许用户使用å«ç¨Žä»·æ ¼\n" -#~ "特别适用于B2C商务\n" -#~ "\n" -#~ "这模å—使å‘ç¥¨çš„æ ¼å¼ç”Ÿæ•ˆ\n" diff --git a/addons/account_tax_include/i18n/zh_TW.po b/addons/account_tax_include/i18n/zh_TW.po deleted file mode 100644 index cc456963251cacb8ec47ac705421e47b0a5e3432..0000000000000000000000000000000000000000 --- a/addons/account_tax_include/i18n/zh_TW.po +++ /dev/null @@ -1,52 +0,0 @@ -# Translation of OpenERP Server. -# This file contains the translation of the following modules: -# * account_tax_include -# -msgid "" -msgstr "" -"Project-Id-Version: OpenERP Server 5.0.4\n" -"Report-Msgid-Bugs-To: support@openerp.com\n" -"POT-Creation-Date: 2009-08-28 16:01+0000\n" -"PO-Revision-Date: 2009-01-30 12:43+0000\n" -"Last-Translator: <>\n" -"Language-Team: \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2010-09-29 05:00+0000\n" -"X-Generator: Launchpad (build Unknown)\n" - -#. module: account_tax_include -#: constraint:ir.ui.view:0 -msgid "Invalid XML for View Architecture!" -msgstr "" - -#. module: account_tax_include -#: field:account.invoice,price_type:0 -msgid "Price method" -msgstr "" - -#. module: account_tax_include -#: model:ir.module.module,shortdesc:account_tax_include.module_meta_information -msgid "Invoices and prices with taxes included" -msgstr "" - -#. module: account_tax_include -#: selection:account.invoice,price_type:0 -msgid "Tax included" -msgstr "" - -#. module: account_tax_include -#: selection:account.invoice,price_type:0 -msgid "Tax excluded" -msgstr "" - -#. module: account_tax_include -#: view:account.tax:0 -msgid "Compute Code for Taxes included prices" -msgstr "" - -#. module: account_tax_include -#: field:account.invoice.line,price_subtotal_incl:0 -msgid "Subtotal" -msgstr "" diff --git a/addons/account_tax_include/test/account_tax_include.yml b/addons/account_tax_include/test/account_tax_include.yml deleted file mode 100644 index a4b0f8531b92ad1281e600923ca16aacdac635d6..0000000000000000000000000000000000000000 --- a/addons/account_tax_include/test/account_tax_include.yml +++ /dev/null @@ -1,93 +0,0 @@ - -- - Creating a tax record -- - !record {model: account.tax, id: account_tax_a0}: - amount: 0.10000000000000001 - applicable_type: 'true' - company_id: base.main_company - description: a - name: a - sequence: 1 - type: percent - type_tax_use: all - -- - Creating a account invoice record with tax excluded -- - !record {model: account.invoice, id: account_invoice_tax_exclude}: - account_id: account.a_recv - address_contact_id: base.res_partner_address_3000 - address_invoice_id: base.res_partner_address_3000 - company_id: base.main_company - currency_id: base.EUR - invoice_line: - - account_id: account.a_sale - name: '[PC1] Basic PC' - price_unit: 100.0 - quantity: 1.0 - invoice_line_tax_id: - - account_tax_a0 - product_id: product.product_product_pc1 - uos_id: product.product_uom_unit - journal_id: account.sales_journal - partner_id: base.res_partner_desertic_hispafuentes - price_type: tax_excluded - reference_type: none - -- - Performing an osv_memory action button_reset_taxes on module account.invoice -- - !python {model: account.invoice}: | - self.button_reset_taxes(cr, uid, [ref("account_invoice_tax_exclude")], {"lang": "en_US", "tz": False, - "active_model": "ir.ui.menu", "active_ids": [ref("account.menu_action_invoice_tree1")], - "type": "out_invoice", "active_id": ref("account.menu_action_invoice_tree1"), - }) -- - Check if tax is excluded in invoice -- - !assert {model: account.invoice, id: account_invoice_tax_exclude, severity: error, string: price type is tax excluded}: - - state == "draft" - - amount_untaxed == 100.0 - - amount_tax == 10.0 - - amount_total == 110.0 - -- - Creating a account invoice record with tax include -- - !record {model: account.invoice, id: account_invoice_tax_include}: - account_id: account.a_recv - address_contact_id: base.res_partner_address_3000 - address_invoice_id: base.res_partner_address_3000 - company_id: base.main_company - currency_id: base.EUR - invoice_line: - - account_id: account.a_sale - name: '[PC1] Basic PC' - price_unit: 100.0 - quantity: 1.0 - invoice_line_tax_id: - - account_tax_a0 - product_id: product.product_product_pc1 - uos_id: product.product_uom_unit - journal_id: account.sales_journal - partner_id: base.res_partner_desertic_hispafuentes - price_type: tax_included - reference_type: none - -- - Performing an osv_memory action button_reset_taxes on module account.invoice -- - !python {model: account.invoice}: | - self.button_reset_taxes(cr, uid, [ref("account_invoice_tax_include")], {"lang": "en_US", "tz": False, - "active_model": "ir.ui.menu", "active_ids": [ref("account.menu_action_invoice_tree1")], - "type": "out_invoice", "active_id": ref("account.menu_action_invoice_tree1"), - }) -- - Check if tax is included in invoice -- - !assert {model: account.invoice, id: account_invoice_tax_include, severity: error, string: price type is tax included}: - - state == "draft" - - amount_untaxed == 90.91 - - amount_tax == 9.09 - - amount_total == 100.00 \ No newline at end of file diff --git a/addons/account_voucher/__openerp__.py b/addons/account_voucher/__openerp__.py index 683cca2442e7b0f9384053f1e6f2ec60326b248b..ce5cd60733254926c298b5c7cc79dcff05ebaae1 100644 --- a/addons/account_voucher/__openerp__.py +++ b/addons/account_voucher/__openerp__.py @@ -22,7 +22,7 @@ { "name" : "Accounting Voucher Entries", "version" : "1.0", - "author" : 'OpenERP SA & Axelor', + "author" : 'OpenERP SA', "description": """Account Voucher module includes all the basic requirements of Voucher Entries for Bank, Cash, Sales, Purchase, Expanse, Contra, etc... * Voucher Entry diff --git a/addons/account_voucher/account_voucher.py b/addons/account_voucher/account_voucher.py index c048763ac5d43d0fdbb05c9e12e3b243df28b524..a59b36a2736c9f1308033028f7211184f0e0deaa 100644 --- a/addons/account_voucher/account_voucher.py +++ b/addons/account_voucher/account_voucher.py @@ -572,7 +572,6 @@ class account_voucher(osv.osv): move_pool = self.pool.get('account.move') move_line_pool = self.pool.get('account.move.line') currency_pool = self.pool.get('res.currency') - bank_st_line_obj = self.pool.get('account.bank.statement.line') tax_obj = self.pool.get('account.tax') for inv in self.browse(cr, uid, ids): if inv.move_id: @@ -593,11 +592,6 @@ class account_voucher(osv.osv): 'period_id': inv.period_id and inv.period_id.id or False } move_id = move_pool.create(cr, uid, move) - line_bank_ids = bank_st_line_obj.search(cr, uid, [('voucher_id', '=', inv.id)], context=context) - if line_bank_ids: - bank_st_line_obj.write(cr, uid, line_bank_ids, { - 'move_ids': [(4, move_id, False)] - }) #create the first line manually company_currency = inv.journal_id.company_id.currency_id.id @@ -867,13 +861,20 @@ class account_bank_statement(osv.osv): def create_move_from_st_line(self, cr, uid, st_line_id, company_currency_id, next_number, context=None): voucher_obj = self.pool.get('account.voucher') wf_service = netsvc.LocalService("workflow") - st_line = self.pool.get('account.bank.statement.line').browse(cr, uid, st_line_id, context=context) + bank_st_line_obj = self.pool.get('account.bank.statement.line') + st_line = bank_st_line_obj.browse(cr, uid, st_line_id, context=context) if st_line.voucher_id: voucher_obj.write(cr, uid, [st_line.voucher_id.id], {'number': next_number}, context=context) if st_line.voucher_id.state == 'cancel': voucher_obj.action_cancel_draft(cr, uid, [st_line.voucher_id.id], context=context) wf_service.trg_validate(uid, 'account.voucher', st_line.voucher_id.id, 'proforma_voucher', cr) - return self.pool.get('account.move.line').write(cr, uid, [x.id for x in st_line.voucher_id.move_ids], {'statement_id': st_line.statement_id.id}, context=context) + + v = voucher_obj.browse(cr, uid, st_line.voucher_id.id, context=context) + bank_st_line_obj.write(cr, uid, [st_line_id], { + 'move_ids': [(4, v.move_id.id, False)] + }) + + return self.pool.get('account.move.line').write(cr, uid, [x.id for x in v.move_ids], {'statement_id': st_line.statement_id.id}, context=context) return super(account_bank_statement, self).create_move_from_st_line(cr, uid, st_line.id, company_currency_id, next_number, context=context) account_bank_statement() @@ -915,4 +916,4 @@ class account_bank_statement_line(osv.osv): self.pool.get('account.voucher').unlink(cr, uid, unlink_ids, context=context) return super(account_bank_statement_line, self).unlink(cr, uid, ids, context=context) -account_bank_statement_line() \ No newline at end of file +account_bank_statement_line() diff --git a/addons/account_voucher/security/ir.model.access.csv b/addons/account_voucher/security/ir.model.access.csv index b27392628f05e60d4386344b95bc49477100c14a..e2b048dcedd9d45106246ded200f577b222a1ada 100644 --- a/addons/account_voucher/security/ir.model.access.csv +++ b/addons/account_voucher/security/ir.model.access.csv @@ -4,6 +4,4 @@ "access_account_voucher_manager","account.voucher","model_account_voucher","account.group_account_manager",1,0,0,0 "access_account_voucher_line_manager","account.voucher.line","model_account_voucher_line","account.group_account_manager",1,0,0,0 "access_account_voucher_invoice","account.voucher invoice","model_account_voucher","account.group_account_invoice",1,1,1,1 -"access_account_voucher_system","account.voucher system","model_account_voucher","base.group_system",1,0,0,0 -"access_account_voucher_line_system","account.voucher.line.system","model_account_voucher_line","base.group_system",1,0,0,0 "access_account_voucher_line_invoice","account.voucher.line invoice","model_account_voucher_line","account.group_account_invoice",1,1,1,1 diff --git a/addons/account_voucher/voucher_payment_receipt_view.xml b/addons/account_voucher/voucher_payment_receipt_view.xml index 8169cac31e360a0593173ba9249cb236329c7cba..a8f827e7bb85208cb4ce3e6e0fb80cea86082fed 100644 --- a/addons/account_voucher/voucher_payment_receipt_view.xml +++ b/addons/account_voucher/voucher_payment_receipt_view.xml @@ -235,6 +235,7 @@ <field name="view_id" eval="False"/> <field name="search_view_id" ref="view_voucher_filter_vendor_pay"/> <field name="target">current</field> + <field name="help">The supplier payment form allows you to track the payment you do to your suppliers. When you select a supplier, the payment method and an amount for the payment, OpenERP will propose to reconcile your payment with the open supplier invoices or bills.</field> </record> <record id="action_vendor_payment_tree" model="ir.actions.act_window.view"> <field eval="1" name="sequence"/> @@ -342,6 +343,7 @@ <field name="search_view_id" ref="view_voucher_filter_customer_pay"/> <field name="view_id" eval="False"/> <field name="target">current</field> + <field name="help">Sales payment allows you to register the payments you receive from your customers. In order to record a payment, you must enter the customer, the payment method (=the journal) and the payment amount. OpenERP will propose to you automatically the reconciliation of this payment with the open invoices or sales receipts.</field> </record> <record id="action_vendor_receipt_tree" model="ir.actions.act_window.view"> <field eval="1" name="sequence"/> diff --git a/addons/account_voucher/voucher_sales_purchase_view.xml b/addons/account_voucher/voucher_sales_purchase_view.xml index ad44b842587d95338d43f821733d028cf6df7c16..ed6e98ad17dbe507c5cb067e05aec7bb25b9316f 100644 --- a/addons/account_voucher/voucher_sales_purchase_view.xml +++ b/addons/account_voucher/voucher_sales_purchase_view.xml @@ -172,6 +172,7 @@ <field name="view_id" eval="False"/> <field name="search_view_id" ref="view_voucher_filter_sale"/> <field name="target">current</field> + <field name="help">When you sell products to a customer, you can give him a sales receipt or an invoice. When the sales receipt is confirmed, it creates journal items automatically and you can record the customer payment related to this sales receipt.</field> </record> <record id="action_sale_receipt_tree" model="ir.actions.act_window.view"> <field eval="1" name="sequence"/> diff --git a/addons/auction/auction_view.xml b/addons/auction/auction_view.xml index 43de651e5546addebaa98b5f78fe023b55b272c6..36a1b60096ca10d2a8e75f2086ed52bf91f64db9 100644 --- a/addons/auction/auction_view.xml +++ b/addons/auction/auction_view.xml @@ -2,8 +2,8 @@ <openerp> <data> <menuitem name="Auction" id="auction_menu_root" icon="terp-purchase" sequence="26" - groups="base.group_system,group_auction_manager,group_auction_user"/> - <menuitem name="Configuration" parent="auction_menu_root" id="auction_config_menu" sequence="7" groups="base.group_system,group_auction_manager"/> + groups="group_auction_manager,group_auction_user"/> + <menuitem name="Configuration" parent="auction_menu_root" id="auction_config_menu" sequence="7" groups="group_auction_manager"/> <menuitem name="Tools Bar Codes" id="auction_outils_menu" parent="auction_menu_root" sequence="5" /> <menuitem name="Deliveries Management" action="action_auction_taken" id="menu_wizard_emporte" parent="auction_outils_menu"/> @@ -82,7 +82,7 @@ </record> <menuitem name="Object Categories" parent="auction_config_menu" action="action_auction_object_categories" - id="menu_auction_object_cat" groups="base.group_system,group_auction_manager"/> + id="menu_auction_object_cat" groups="group_auction_manager"/> <!-- Auction Management/Auction Dates/New Auction Dates --> @@ -765,7 +765,7 @@ <menuitem name="Buyers" id="auction_buyers_menu" parent="auction_menu_root" sequence="4"/> <menuitem name="Bids" parent="auction_buyers_menu" action="action_bid_open" id="menu_action_bid_open"/> - <menuitem name="Reporting" id="auction_report_menu" parent="auction_menu_root" sequence="6" groups="base.group_system,group_auction_manager"/> + <menuitem name="Reporting" id="auction_report_menu" parent="auction_menu_root" sequence="6" groups="group_auction_manager"/> <act_window name="Deposit slip" context="{'search_default_partner_id': [active_id]}" diff --git a/addons/auction/board_auction_view.xml b/addons/auction/board_auction_view.xml index 56ed41e2ca534e75f298b880dbe70e380360def1..12ef99043b0f4854179494c7dff73b30916a919b 100644 --- a/addons/auction/board_auction_view.xml +++ b/addons/auction/board_auction_view.xml @@ -111,7 +111,7 @@ sequence="1" id="menu_board_auction_open" icon="terp-graph" parent="menu_board_auction"/> - <menuitem name="Auction" id="auction.auction_menu_root" icon="terp-purchase" sequence="26" groups="base.group_system" action="open_board_auction"/> + <menuitem name="Auction" id="auction.auction_menu_root" icon="terp-purchase" sequence="26" action="open_board_auction"/> </data> </openerp> diff --git a/addons/auction/security/ir.model.access.csv b/addons/auction/security/ir.model.access.csv index 31f3182fa04101e80b8e1503882b54cefada8add..5458e6c2ac3aeefb2cc4f349eaeba76869b1c610 100644 --- a/addons/auction/security/ir.model.access.csv +++ b/addons/auction/security/ir.model.access.csv @@ -18,15 +18,6 @@ "access_report_auction_adjudication","report.auction.adjudication","model_report_auction_adjudication","group_auction_manager",1,1,1,1 "access_report_object_encoded","report.object.encoded","model_report_object_encoded","group_auction_manager",1,1,1,1 "access_aie_category","aie.category","model_aie_category","group_auction_manager",1,1,1,1 -"access_auction_dates_system","auction.dates system","model_auction_dates","base.group_system",1,0,0,0 -"access_auction_lots_system","auction.lots system","model_auction_lots","base.group_system",1,0,0,0 -"access_auction_deposit_system","auction.deposit system","model_auction_deposit","base.group_system",1,0,0,0 -"access_auction_bid_system","auction.bid system","model_auction_bid","base.group_system",1,0,0,0 -"access_auction_artists_system","auction.artists system","model_auction_artists","base.group_system",1,1,1,1 -"access_auction_lot_category_system","auction.lot.category system","model_auction_lot_category","base.group_system",1,1,1,1 -"access_auction_lot_history_system","auction.lot.history system","model_auction_lot_history","base.group_system",1,0,0,0 -"access_auction_deposit_cost_system","auction.deposit.cost system","model_auction_deposit_cost","base.group_system",1,0,0,0 -"access_auction_bid_line_system","auction.bid.line system","model_auction_bid_line","base.group_system",1,0,0,0 "access_auction_account_tax","account.tax manager","account.model_account_tax","group_auction_manager",1,1,1,0 "access_auction_account_fiscalyear","account.fiscalyear manager","account.model_account_fiscalyear","group_auction_manager",1,1,1,0 "access_auction_account_journal","account.journal manager","account.model_account_journal","group_auction_manager",1,1,1,0 diff --git a/addons/audittrail/audittrail.py b/addons/audittrail/audittrail.py index dd843449c8c3c093c69e2e0bd74be47feb5dd7a9..c2ef5f5d4a489940fb4df6f683831debdfe330aa 100644 --- a/addons/audittrail/audittrail.py +++ b/addons/audittrail/audittrail.py @@ -456,7 +456,7 @@ class audittrail_objects_proxy(osv_pool): """ Overrides Object Proxy execute method @param db: the current database - @param uid: the current user’s ID for security checks, + @param uid: the current user's ID for security checks, @param object: Object who's values are being changed @param method: get any method and create log @@ -500,49 +500,47 @@ class audittrail_objects_proxy(osv_pool): return self.log_fct(db, uid, model, method, fct_src, *args) return fct_src(db, uid, model, method, *args) - res = my_fct(db, uid, model, method, *args) - cr.close() - return res - + try: + res = my_fct(db, uid, model, method, *args) + return res + finally: + cr.close() def exec_workflow(self, db, uid, model, method, *args, **argv): pool = pooler.get_pool(db) - cr = pooler.get_db(db).cursor() - cr.autocommit(True) logged_uids = [] fct_src = super(audittrail_objects_proxy, self).exec_workflow field = method rule = False model_pool = pool.get('ir.model') rule_pool = pool.get('audittrail.rule') - model_ids = model_pool.search(cr, uid, [('model', '=', model)]) - for obj_name in pool.obj_list(): - if obj_name == 'audittrail.rule': - rule = True - if not rule: - cr.close() - return super(audittrail_objects_proxy, self).exec_workflow(db, uid, model, method, *args, **argv) - if not model_ids: - cr.close() - return super(audittrail_objects_proxy, self).exec_workflow(db, uid, model, method, *args, **argv) - - rule_ids = rule_pool.search(cr, uid, [('object_id', 'in', model_ids), ('state', '=', 'subscribed')]) - if not rule_ids: - cr.close() - return super(audittrail_objects_proxy, self).exec_workflow(db, uid, model, method, *args, **argv) - - for thisrule in rule_pool.browse(cr, uid, rule_ids): - for user in thisrule.user_id: - logged_uids.append(user.id) - if not logged_uids or uid in logged_uids: - if thisrule.log_workflow: - cr.close() - return self.log_fct(db, uid, model, method, fct_src, *args) - cr.close() - return super(audittrail_objects_proxy, self).exec_workflow(db, uid, model, method, *args, **argv) + cr = pooler.get_db(db).cursor() + cr.autocommit(True) + try: + model_ids = model_pool.search(cr, uid, [('model', '=', model)]) + for obj_name in pool.obj_list(): + if obj_name == 'audittrail.rule': + rule = True + if not rule: + return super(audittrail_objects_proxy, self).exec_workflow(db, uid, model, method, *args, **argv) + if not model_ids: + return super(audittrail_objects_proxy, self).exec_workflow(db, uid, model, method, *args, **argv) - cr.close() - return True + rule_ids = rule_pool.search(cr, uid, [('object_id', 'in', model_ids), ('state', '=', 'subscribed')]) + if not rule_ids: + return super(audittrail_objects_proxy, self).exec_workflow(db, uid, model, method, *args, **argv) + + for thisrule in rule_pool.browse(cr, uid, rule_ids): + for user in thisrule.user_id: + logged_uids.append(user.id) + if not logged_uids or uid in logged_uids: + if thisrule.log_workflow: + return self.log_fct(db, uid, model, method, fct_src, *args) + return super(audittrail_objects_proxy, self).exec_workflow(db, uid, model, method, *args, **argv) + + return True + finally: + cr.close() audittrail_objects_proxy() diff --git a/addons/audittrail/audittrail_view.xml b/addons/audittrail/audittrail_view.xml index 218db24d89a890022a5bc0a06ad20594b04579cc..5fdcfcd55585cd6eb715ee61d4cf8e95c61d904e 100644 --- a/addons/audittrail/audittrail_view.xml +++ b/addons/audittrail/audittrail_view.xml @@ -55,7 +55,7 @@ <!-- Action for audittrail rule --> <record model="ir.actions.act_window" id="action_audittrail_rule_tree"> - <field name="name">Rules</field> + <field name="name">Audit Rules</field> <field name="res_model">audittrail.rule</field> <field name="type">ir.actions.act_window</field> <field name="view_type">form</field> @@ -63,12 +63,8 @@ <!--<field name="view_id" ref="view_audittrail_rule_form" />--> </record> - <menuitem name="Audittrail" id="menu_action_audittrail" - groups="base.group_extended" - parent="base.menu_administration" /> - <menuitem name="Rules" id="menu_action_audittrail_rule_tree" - action="action_audittrail_rule_tree" parent="menu_action_audittrail" /> + action="action_audittrail_rule_tree" parent="base.menu_audit" /> <record model="ir.actions.act_window" id="action_audittrail_rule_tree_sub"> @@ -152,12 +148,12 @@ <!-- Action for Audittrail Log --> <record model="ir.actions.act_window" id="action_audittrail_log_tree"> - <field name="name">Logs</field> + <field name="name">Audit Logs</field> <field name="res_model">audittrail.log</field> <field name="view_type">form</field> </record> <menuitem name="Logs" id="menu_action_audittrail_log_tree" - action="action_audittrail_log_tree" parent="menu_action_audittrail" /> + action="action_audittrail_log_tree" parent="base.menu_audit" /> </data> </openerp> diff --git a/addons/audittrail/i18n/ru.po b/addons/audittrail/i18n/ru.po index cf6d78603e0b8ebd21e78cff7330d77f7c88b41d..30a63c8c88da21ba5039180ea1a8249b6b245bcb 100644 --- a/addons/audittrail/i18n/ru.po +++ b/addons/audittrail/i18n/ru.po @@ -7,13 +7,13 @@ msgstr "" "Project-Id-Version: OpenERP Server 6.0dev\n" "Report-Msgid-Bugs-To: support@openerp.com\n" "POT-Creation-Date: 2009-08-28 16:01+0000\n" -"PO-Revision-Date: 2010-10-15 12:05+0000\n" +"PO-Revision-Date: 2010-10-16 09:06+0000\n" "Last-Translator: Nikolay Chesnokov <chesnokov_n@msn.com>\n" "Language-Team: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2010-10-16 04:48+0000\n" +"X-Launchpad-Export-Date: 2010-10-17 04:53+0000\n" "X-Generator: Launchpad (build Unknown)\n" #. module: audittrail diff --git a/addons/audittrail/security/ir.model.access.csv b/addons/audittrail/security/ir.model.access.csv index ac367182f260b3c1a49b8bbed0b0d03797806060..877cf622ad49d9c1b4b5e748203fd37510256224 100644 --- a/addons/audittrail/security/ir.model.access.csv +++ b/addons/audittrail/security/ir.model.access.csv @@ -1,7 +1,4 @@ "id","name","model_id:id","group_id:id","perm_read","perm_write","perm_create","perm_unlink" -"access_audittrail_rule_group_system","audittrail rule system","model_audittrail_rule","base.group_system",1,1,1,1 -"access_audittrail_log_group_system","audittrail log system","model_audittrail_log","base.group_system",1,1,1,1 -"access_audittrail_logline_group_system","audittrail log line system","model_audittrail_log_line","base.group_system",1,1,1,1 "access_audittrail_rule_all_users","audittrail rule all","model_audittrail_rule","base.group_user",1,0,0,0 "access_audittrail_log_all_users","audittrail log all","model_audittrail_log","base.group_user",1,0,1,0 "access_audittrail_log_line_all_users","audittrail log line all","model_audittrail_log_line","base.group_user",1,0,1,0 diff --git a/addons/base_action_rule/security/ir.model.access.csv b/addons/base_action_rule/security/ir.model.access.csv index c3a69f93e4ce3728c00730838f1d1ce71cdb45c3..4d2e612b384d5319a8bf2eeab1b0879116a85e14 100644 --- a/addons/base_action_rule/security/ir.model.access.csv +++ b/addons/base_action_rule/security/ir.model.access.csv @@ -1,3 +1,3 @@ "id","name","model_id:id","group_id:id","perm_read","perm_write","perm_create","perm_unlink" "access_base_action_rule","base.action.rule","model_base_action_rule",,1,0,0,0 -"access_base_action_rule_config","base.action.rule config","model_base_action_rule",base.group_system,1,1,1,1 \ No newline at end of file +"access_base_action_rule_config","base.action.rule config","model_base_action_rule",base.group_system,1,1,1,1 diff --git a/addons/base_calendar/base_calendar_view.xml b/addons/base_calendar/base_calendar_view.xml index b5f234aa7cb1d04ccbba35256a4d7d82a5fd98e2..9f27e79d5a582748d055bd7a9238a655fb66da2c 100644 --- a/addons/base_calendar/base_calendar_view.xml +++ b/addons/base_calendar/base_calendar_view.xml @@ -157,12 +157,12 @@ </record> <!-- Calenadar's menu --> - <menuitem id="base.menu_calendar_configuration" name="Calendar" - parent="base.menu_base_config" sequence="6" groups="base.group_system,base.group_sale_manager" /> + <menuitem id="base.menu_calendar_configuration" name="Calendar" + parent="base.menu_base_config" sequence="6" groups="base.group_sale_manager" /> <!-- Invitation menu --> - <menuitem id="menu_attendee_invitations" + <menuitem id="menu_attendee_invitations" parent="base.menu_calendar_configuration" groups="base.group_extended" sequence="10" action="action_view_attendee_form" /> @@ -208,6 +208,7 @@ <field name="res_model">res.alarm</field> <field name="view_type">form</field> <field name="view_mode">tree,form</field> + <field name="help">Create specific calendar alarms that can be assigned to calendar events or meetings.</field> </record> <!-- Menu for Alarms--> diff --git a/addons/base_contact/i18n/sr.po b/addons/base_contact/i18n/sr.po index 9a727107d0534e1c92fe47880a15e886389aec79..b8dc4170bdfd366021b973647235ddc41de5550f 100644 --- a/addons/base_contact/i18n/sr.po +++ b/addons/base_contact/i18n/sr.po @@ -8,13 +8,13 @@ msgstr "" "Project-Id-Version: openobject-addons\n" "Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n" "POT-Creation-Date: 2009-08-28 16:01+0000\n" -"PO-Revision-Date: 2010-10-15 11:50+0000\n" -"Last-Translator: zmmaj <Unknown>\n" +"PO-Revision-Date: 2010-10-16 09:28+0000\n" +"Last-Translator: OpenERP Administrators <Unknown>\n" "Language-Team: Serbian <sr@li.org>\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2010-10-16 04:47+0000\n" +"X-Launchpad-Export-Date: 2010-10-17 04:53+0000\n" "X-Generator: Launchpad (build Unknown)\n" #. module: base_contact diff --git a/addons/base_iban/i18n/sr.po b/addons/base_iban/i18n/sr.po index a7322e5449083f22a3c4e0461f572ddbe11354ad..cd0a36c5208190b546060603be6211e1d749bc32 100644 --- a/addons/base_iban/i18n/sr.po +++ b/addons/base_iban/i18n/sr.po @@ -8,13 +8,13 @@ msgstr "" "Project-Id-Version: openobject-addons\n" "Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n" "POT-Creation-Date: 2009-08-28 16:01+0000\n" -"PO-Revision-Date: 2010-10-15 11:58+0000\n" -"Last-Translator: zmmaj <Unknown>\n" +"PO-Revision-Date: 2010-10-16 09:02+0000\n" +"Last-Translator: OpenERP Administrators <Unknown>\n" "Language-Team: Serbian <sr@li.org>\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2010-10-16 04:47+0000\n" +"X-Launchpad-Export-Date: 2010-10-17 04:53+0000\n" "X-Generator: Launchpad (build Unknown)\n" #. module: base_iban diff --git a/addons/base_module_quality/i18n/it.po b/addons/base_module_quality/i18n/it.po index 6f151909339db52fa362aa284c48e2c6cec1e235..72b5fbe607d5dac745d49c36fff4bc06ec2a5e4e 100644 --- a/addons/base_module_quality/i18n/it.po +++ b/addons/base_module_quality/i18n/it.po @@ -8,13 +8,13 @@ msgstr "" "Project-Id-Version: openobject-addons\n" "Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n" "POT-Creation-Date: 2009-08-28 16:01+0000\n" -"PO-Revision-Date: 2010-09-29 11:04+0000\n" -"Last-Translator: OpenERP Administrators <Unknown>\n" +"PO-Revision-Date: 2010-10-16 08:17+0000\n" +"Last-Translator: simone.sandri <Unknown>\n" "Language-Team: Italian <it@li.org>\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2010-09-30 04:43+0000\n" +"X-Launchpad-Export-Date: 2010-10-17 04:53+0000\n" "X-Generator: Launchpad (build Unknown)\n" #. module: base_module_quality @@ -38,7 +38,7 @@ msgstr "Modulo base di qualità " #. module: base_module_quality #: field:module.quality.check,name:0 msgid "Rated Module" -msgstr "" +msgstr "Valuta Modulo" #. module: base_module_quality #: view:module.quality.detail:0 diff --git a/addons/base_module_quality/i18n/sr.po b/addons/base_module_quality/i18n/sr.po index 8459f9c8d9860ed8158f8bf4790f8f2d4de02665..83992eb264057f46cb2908a0948b0481552b3f5f 100644 --- a/addons/base_module_quality/i18n/sr.po +++ b/addons/base_module_quality/i18n/sr.po @@ -8,13 +8,13 @@ msgstr "" "Project-Id-Version: openobject-addons\n" "Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n" "POT-Creation-Date: 2009-08-28 16:01+0000\n" -"PO-Revision-Date: 2010-10-15 12:04+0000\n" -"Last-Translator: zmmaj <Unknown>\n" +"PO-Revision-Date: 2010-10-16 11:23+0000\n" +"Last-Translator: OpenERP Administrators <Unknown>\n" "Language-Team: Serbian <sr@li.org>\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2010-10-16 04:48+0000\n" +"X-Launchpad-Export-Date: 2010-10-17 04:53+0000\n" "X-Generator: Launchpad (build Unknown)\n" #. module: base_module_quality diff --git a/addons/base_module_record/i18n/sr.po b/addons/base_module_record/i18n/sr.po index 227308f8233fcd3012c7f1f3513b7b4a333a53e5..40a3beef7c4e4c379ee43fa3b53a8433b2a1b7f1 100644 --- a/addons/base_module_record/i18n/sr.po +++ b/addons/base_module_record/i18n/sr.po @@ -8,13 +8,13 @@ msgstr "" "Project-Id-Version: openobject-addons\n" "Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n" "POT-Creation-Date: 2009-08-28 16:01+0000\n" -"PO-Revision-Date: 2010-10-15 12:24+0000\n" -"Last-Translator: zmmaj <Unknown>\n" +"PO-Revision-Date: 2010-10-16 10:25+0000\n" +"Last-Translator: OpenERP Administrators <Unknown>\n" "Language-Team: Serbian <sr@li.org>\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2010-10-16 04:47+0000\n" +"X-Launchpad-Export-Date: 2010-10-17 04:53+0000\n" "X-Generator: Launchpad (build Unknown)\n" #. module: base_module_record diff --git a/addons/base_report_creator/i18n/sr.po b/addons/base_report_creator/i18n/sr.po index 661e7d96bb019f8e8e0186bc64eb424245513d95..d8c008b6b9ef1dad6f9ea558537604528ca16691 100644 --- a/addons/base_report_creator/i18n/sr.po +++ b/addons/base_report_creator/i18n/sr.po @@ -8,13 +8,13 @@ msgstr "" "Project-Id-Version: openobject-addons\n" "Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n" "POT-Creation-Date: 2009-08-28 16:01+0000\n" -"PO-Revision-Date: 2010-10-15 12:52+0000\n" -"Last-Translator: zmmaj <Unknown>\n" +"PO-Revision-Date: 2010-10-16 09:40+0000\n" +"Last-Translator: OpenERP Administrators <Unknown>\n" "Language-Team: Serbian <sr@li.org>\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2010-10-16 04:48+0000\n" +"X-Launchpad-Export-Date: 2010-10-17 04:53+0000\n" "X-Generator: Launchpad (build Unknown)\n" #. module: base_report_creator diff --git a/addons/base_report_designer/i18n/sr.po b/addons/base_report_designer/i18n/sr.po index 380fd397706c07246aa51aa8b4ab69f295e248e0..74bacc3daa9f770986694d2e6fca34ab82f1c24f 100644 --- a/addons/base_report_designer/i18n/sr.po +++ b/addons/base_report_designer/i18n/sr.po @@ -8,13 +8,13 @@ msgstr "" "Project-Id-Version: openobject-addons\n" "Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n" "POT-Creation-Date: 2009-08-28 16:01+0000\n" -"PO-Revision-Date: 2010-10-15 13:03+0000\n" -"Last-Translator: zmmaj <Unknown>\n" +"PO-Revision-Date: 2010-10-16 09:24+0000\n" +"Last-Translator: OpenERP Administrators <Unknown>\n" "Language-Team: Serbian <sr@li.org>\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2010-10-16 04:48+0000\n" +"X-Launchpad-Export-Date: 2010-10-17 04:53+0000\n" "X-Generator: Launchpad (build Unknown)\n" #. module: base_report_designer diff --git a/addons/base_synchro/__openerp__.py b/addons/base_synchro/__openerp__.py index bd285821e2b4b07b51eb0928ed4466abedb67b18..3bb46827d689981bfced1f7e6f8049f3eb015c4b 100644 --- a/addons/base_synchro/__openerp__.py +++ b/addons/base_synchro/__openerp__.py @@ -22,7 +22,7 @@ { "name":"Base Synchro", "version":"0.1", - "author":"Tiny", + "author":"OpenERP SA", "category":"Generic Modules/Base", "description": """Synchronization with all objects.""", "depends":["base"], diff --git a/addons/board/board_administration_view.xml b/addons/board/board_administration_view.xml index 675143342c04297f892c4741332dcbde733bf7a5..7c7c0da57cf9873ce2501be554c03dbc6413bcb6 100644 --- a/addons/board/board_administration_view.xml +++ b/addons/board/board_administration_view.xml @@ -1,29 +1,33 @@ <?xml version="1.0" encoding="utf-8"?> <openerp> <data> - <!-- Latest Activities --> - <record model="ir.ui.view" id="view_latest_activities_tree"> - <field name="name">latest.activities.tree</field> - <field name="model">res.log</field> + <!-- User Connection --> + <record model="ir.ui.view" id="view_user_connection_tree"> + <field name="name">user.connection.tree</field> + <field name="model">res.users</field> <field name="type">tree</field> <field name="arch" type="xml"> - <tree string="Latest Activities"> + <tree string="Latest Connections"> <field name="name"/> - <field name="create_date"/> - <field name="user_id" /> - <field name="res_model"/> - <field name="res_id"/> + <field name="date"/> </tree> </field> </record> + <record model="ir.actions.act_window" id="action_user_connection_tree"> + <field name="name">Latest Connections</field> + <field name="res_model">res.users</field> + <field name="view_type">form</field> + <field name="view_mode">tree,form</field> + <field name="view_id" ref="view_user_connection_tree"></field> + </record> + + <!-- Latest Activities --> <record model="ir.actions.act_window" id="action_latest_activities_tree"> <field name="name">Latest Activities</field> <field name="res_model">res.log</field> <field name="view_type">form</field> <field name="view_mode">tree,form</field> - <field name="view_id" ref="view_latest_activities_tree"></field> </record> - <record id="board_administration_form" model="ir.ui.view"> <field name="name">board.administration.form</field> <field name="model">board.board</field> @@ -32,7 +36,8 @@ <form string="Administration Dashboard"> <hpaned position="100"> <child1> - <action name="%(action_latest_activities_tree)d" string="Latest Activities" sequence="1"/> + <action name="%(action_latest_activities_tree)d" string="Latest Activities" sequence="1"/> + <action width="510" name="%(action_user_connection_tree)d" string="Latest Connections" /> </child1> <child2> </child2> @@ -47,43 +52,9 @@ <field name="view_mode">form</field> <field name="view_id" ref="board_administration_form"/> </record> - <menuitem id="menu_reporting" name="Reporting" parent="base.menu_administration" sequence="11" - groups="base.group_extended"/> - <menuitem id="board.admin_menu_dasboard" name="Dashboard" sequence="0" parent="menu_reporting"/> + <menuitem id="board.admin_menu_dasboard" name="Dashboard" sequence="0" parent="base.menu_reporting"/> <menuitem id="menu_board_admin" action="open_board_administration_form" icon="terp-graph" parent="board.admin_menu_dasboard" /> - <!-- User Connection --> - <record model="ir.ui.view" id="view_user_connection_tree"> - <field name="name">user.connection.tree</field> - <field name="model">res.users</field> - <field name="type">tree</field> - <field name="arch" type="xml"> - <tree string="Latest Connections"> - <field name="name"/> - <field name="date"/> - </tree> - </field> - </record> - <record model="ir.actions.act_window" id="action_user_connection_tree"> - <field name="name">Latest Connections</field> - <field name="res_model">res.users</field> - <field name="view_type">form</field> - <field name="view_mode">tree,form</field> - <field name="view_id" ref="view_user_connection_tree"></field> - </record> - - <record id="board_user_connection_form" model="ir.ui.view"> - <field name="name">board.user.connection.form</field> - <field name="model">board.board</field> - <field name="type">form</field> - <field name="inherit_id" ref="board_administration_form"/> - <field name="arch" type="xml"> - <xpath expr="/form/hpaned/child1/action[@string='Latest Activities']" position="after"> - <action width="510" name="%(action_user_connection_tree)d" string="Latest Connections" /> - </xpath> - </field> - </record> - </data> </openerp> diff --git a/addons/claim_from_delivery/i18n/sr.po b/addons/claim_from_delivery/i18n/sr.po new file mode 100644 index 0000000000000000000000000000000000000000..602957aa82a5dd6d925ba9148b81396216528a65 --- /dev/null +++ b/addons/claim_from_delivery/i18n/sr.po @@ -0,0 +1,60 @@ +# Serbian 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 <EMAIL@ADDRESS>, 2010. +# +msgid "" +msgstr "" +"Project-Id-Version: openobject-addons\n" +"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n" +"POT-Creation-Date: 2010-08-20 12:02+0000\n" +"PO-Revision-Date: 2010-10-16 08:05+0000\n" +"Last-Translator: zmmaj <Unknown>\n" +"Language-Team: Serbian <sr@li.org>\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2010-10-17 04:53+0000\n" +"X-Generator: Launchpad (build Unknown)\n" + +#. module: claim_from_delivery +#: model:ir.actions.act_window,name:claim_from_delivery.action_claim_from_delivery +msgid "Claim" +msgstr "Zahtev" + +#. module: claim_from_delivery +#: constraint:ir.ui.view:0 +msgid "Invalid XML for View Architecture!" +msgstr "Nevažeći XML za pregled arhitekture" + +#. module: claim_from_delivery +#: constraint:ir.model:0 +msgid "" +"The Object name must start with x_ and not contain any special character !" +msgstr "" +"Ime objekta mora da poÄinje sa x_ i ne sme da sadrži specijalne karaktere !" + +#. module: claim_from_delivery +#: model:ir.module.module,description:claim_from_delivery.module_meta_information +msgid "Create Claim from delivery order:\n" +msgstr "Kreiraj Zahtev iz Naloga Isporuke\n" + +#. module: claim_from_delivery +#: model:ir.module.module,shortdesc:claim_from_delivery.module_meta_information +msgid "Claim from delivery" +msgstr "Zahtev od Isporuke" + +#. module: claim_from_delivery +#: constraint:ir.actions.act_window:0 +msgid "Invalid model name in the action definition." +msgstr "PogreÅ¡no ime modela u definiciji akcije." + +#. module: claim_from_delivery +#: model:ir.model,name:claim_from_delivery.model_stock_picking +msgid "Picking List" +msgstr "Izborna Lista" + +#. module: claim_from_delivery +#: field:stock.picking,partner_id:0 +msgid "Partner" +msgstr "Partner" diff --git a/addons/crm/board_crm_view.xml b/addons/crm/board_crm_view.xml index 72368d1413a1a6b3ac7388a9f9f698888e63d4de..79dadadbcd079764dd3a881eb22d0e84bfc8361b 100644 --- a/addons/crm/board_crm_view.xml +++ b/addons/crm/board_crm_view.xml @@ -159,6 +159,5 @@ sequence="1" id="menu_board_crm" icon="terp-graph" groups="base.group_sale_salesman"/> - <menuitem icon="terp-partner" id="base.menu_base_partner" name="Sales" sequence="0" groups="base.group_sale_salesman,base.group_sale_manager,base.group_system,base.group_partner_manager" action="open_board_crm"/> </data> </openerp> diff --git a/addons/crm/crm.py b/addons/crm/crm.py index d6194254c659aef9af4a4cab062d9882715eb065..c809857de66ef28fc7cd7e8101a166d4c42fa3d8 100644 --- a/addons/crm/crm.py +++ b/addons/crm/crm.py @@ -322,11 +322,7 @@ class crm_case(object): 'active': True}) self._action(cr, uid, cases, 'cancel') for case in cases: - message = "The " + self._description + " '" + case.name + "' has been Cancelled." - #TODO: Need to differentiate lead and opportunity -# if hasattr(case, 'type'): -# #TO CHECK: hasattr gives warning for other crm objects that don't have field 'type' -# message = "The " + (case.type or 'Case').title() + " '" + case.name + "' has been Cancelled." + message = _("The case '%s' has been cancelled.") % (case.name,) self.log(cr, uid, case.id, message) return True diff --git a/addons/crm/crm_lead.py b/addons/crm/crm_lead.py index 23b1af57b28e724afa91f7c39554a221bff220fe..6a113a42c2ab17da350af0d7cf0d87275a00c418 100644 --- a/addons/crm/crm_lead.py +++ b/addons/crm/crm_lead.py @@ -197,10 +197,14 @@ class crm_lead(crm_case, osv.osv): value.update({'date_open': time.strftime('%Y-%m-%d %H:%M:%S')}) self.write(cr, uid, ids, value) - for (id, name) in self.name_get(cr, uid, ids): - type = self.browse(cr, uid, id).type or 'Lead' - message = (_('The ') + type.title()) + " '" + name + "' "+ _("has been Opened.") - self.log(cr, uid, id, message) + for case in self.browse(cr, uid, ids): + if case.type == 'lead': + message = _("The lead '%s' has been opened.") % case.name + elif case.type == 'opportunity': + message = _("The opportunity '%s' has been opened.") % case.name + else: + message = _("The case '%s' has been opened.") % case.name + self.log(cr, uid, case.id, message) return res def case_close(self, cr, uid, ids, *args): @@ -213,11 +217,14 @@ class crm_lead(crm_case, osv.osv): """ res = super(crm_lead, self).case_close(cr, uid, ids, args) self.write(cr, uid, ids, {'date_closed': time.strftime('%Y-%m-%d %H:%M:%S')}) - for (id, name) in self.name_get(cr, uid, ids): - lead = self.browse(cr, uid, id) - if lead.type == 'lead': - message = _('The Lead') + " '" + name + "' "+ _("has been Closed.") - self.log(cr, uid, id, message) + for case in self.browse(cr, uid, ids): + if case.type == 'lead': + message = _("The lead '%s' has been closed.") % case.name + elif case.type == 'opportunity': + message = _("The opportunity '%s' has been closed.") % case.name + else: + message = _("The case '%s' has been closed.") % case.name + self.log(cr, uid, case.id, message) return res def convert_opportunity(self, cr, uid, ids, context=None): @@ -315,8 +322,6 @@ class crm_lead(crm_case, osv.osv): vals.update(res) res = self.create(cr, uid, vals, context) - message = _('A Lead created') + " '" + subject + "' " + _("from Mailgate.") - self.log(cr, uid, res, message) attachents = msg.get('attachments', []) for attactment in attachents or []: data_attach = { diff --git a/addons/crm/crm_meeting.py b/addons/crm/crm_meeting.py index 5fc9805304667d2c40b9617780ff72fdfda58bcf..b81819e1171e727b2ca6846f90a837e78790a7bd 100644 --- a/addons/crm/crm_meeting.py +++ b/addons/crm/crm_meeting.py @@ -134,7 +134,7 @@ class crm_meeting(crm_case, osv.osv): """ res = super(crm_meeting, self).case_open(cr, uid, ids, args) for (id, name) in self.name_get(cr, uid, ids): - message = _('The Meeting') + " '" + name + "' "+ _("has been Confirmed.") + message = _("The meeting '%s' has been confirmed.") % name self.log(cr, uid, id, message) return res diff --git a/addons/crm/crm_meeting_view.xml b/addons/crm/crm_meeting_view.xml index dfeadb85bcc350f5cd3a014c76fdde52218170d0..163a2f5878af79214eb93c75bb19fc89561ba9c2 100644 --- a/addons/crm/crm_meeting_view.xml +++ b/addons/crm/crm_meeting_view.xml @@ -11,6 +11,7 @@ <field name="view_id" ref="crm.crm_case_categ_tree-view"/> <field name="domain">[('object_id.model', '=', 'crm.meeting')]</field> <field name="context">{'object_id':'crm.meeting'}</field> + <field name="help">Create different meeting categories to better organize and classify your meetings.</field> </record> <menuitem action="crm_meeting_categ_action" diff --git a/addons/crm/crm_opportunity.py b/addons/crm/crm_opportunity.py index 9bc4efda0f88f13be11e4ca6aa7bba4360096210..9bd998d0f46521b0d60f9aa5d786a6992b8acfba 100644 --- a/addons/crm/crm_opportunity.py +++ b/addons/crm/crm_opportunity.py @@ -70,7 +70,7 @@ class crm_opportunity(osv.osv): for (id, name) in self.name_get(cr, uid, ids): opp = self.browse(cr, uid, id) if opp.type == 'opportunity': - message = _('The Opportunity') + " '" + name + "' "+ _("has been Won.") + message = _("The opportunity '%s' has been won.") % name self.log(cr, uid, id, message) return res @@ -94,7 +94,7 @@ class crm_opportunity(osv.osv): for (id, name) in self.name_get(cr, uid, ids): opp = self.browse(cr, uid, id) if opp.type == 'opportunity': - message = _('The Opportunity') + " '" + name + "' "+ _("has been Lost.") + message = _("The opportunity '%s' has been marked as lost.") % name self.log(cr, uid, id, message) return res diff --git a/addons/crm/crm_opportunity_view.xml b/addons/crm/crm_opportunity_view.xml index 5bb55a2320d966c2ad0c8fd8f55f6232f48a5295..644d12cfc77aadf396f2413a0c3362ebf6369c81 100644 --- a/addons/crm/crm_opportunity_view.xml +++ b/addons/crm/crm_opportunity_view.xml @@ -76,6 +76,9 @@ <button name="case_cancel" string="Cancel" states="draft" type="object" icon="gtk-close" /> + <button name="case_mark_lost" string="Mark Lost" + states="open,pending" type="object" + icon="gtk-cancel" /> <button name="case_reset" string="Reset to Draft" states="done,cancel" type="object" icon="gtk-convert" /> @@ -89,9 +92,6 @@ states="open,pending" type="object" groups="base.group_extended" icon="gtk-go-up" /> - <button name="case_mark_lost" string="Mark Lost" - states="open,pending" type="object" - icon="gtk-cancel" /> <button name="case_close" string="Mark Won" states="open,pending" type="object" icon="gtk-apply" /> diff --git a/addons/crm/crm_view.xml b/addons/crm/crm_view.xml index b77de509045666d0d97db0ecad8d77c5d4561247..fa576bca24fcddb2e991d81054cd92aabcf5242c 100644 --- a/addons/crm/crm_view.xml +++ b/addons/crm/crm_view.xml @@ -2,16 +2,17 @@ <openerp> <data> - <menuitem icon="terp-partner" id="base.menu_base_partner" name="Sales" sequence="0" groups="base.group_system,base.group_sale_manager,base.group_sale_salesman"/> + <menuitem icon="terp-partner" id="base.menu_base_partner" name="Sales" sequence="0" + groups="base.group_sale_manager,base.group_sale_salesman"/> <menuitem id="base.menu_crm_config_lead" name="Leads & Opportunities" - parent="base.menu_base_config" sequence="1" groups="base.group_extended,base.group_system"/> + parent="base.menu_base_config" sequence="1" groups="base.group_sale_manager"/> <menuitem id="base.menu_sale_config_sales" name="Sales" - parent="base.menu_base_config" sequence="0" groups="base.group_system,base.group_extended"/> + parent="base.menu_base_config" sequence="0" groups="base.group_sale_manager"/> <menuitem id="menu_crm_config_phonecall" name="Phone Call" - parent="base.menu_base_config" sequence="5" groups="base.group_extended,base.group_system"/> + parent="base.menu_base_config" sequence="5" groups="base.group_extended"/> <menuitem id="base.next_id_64" name="Reporting" parent="base.menu_base_partner" sequence="11" /> @@ -325,6 +326,7 @@ <field name="res_model">crm.segmentation</field> <field name="view_type">form</field> <field name="view_mode">tree,form</field> + <field name="help">Create specific partner categories that you will then be able to assign to your partners to better manage your interactions with them. The segmentation tool will assign categories to partners based on defined criteria.</field> </record> <menuitem action="crm_segmentation_tree-act" diff --git a/addons/crm/security/ir.model.access.csv b/addons/crm/security/ir.model.access.csv index 5f695b5e5c1c856929db93c7eff67826c64027fb..9abdaed00c5e8be1f99d79f8984123cf796eb378 100644 --- a/addons/crm/security/ir.model.access.csv +++ b/addons/crm/security/ir.model.access.csv @@ -7,7 +7,6 @@ "access_crm_case_categ","crm.case.categ","model_crm_case_categ","base.group_sale_salesman",1,1,1,0 "access_crm_meeting_manager","crm.meeting.manager","model_crm_meeting","base.group_sale_manager",1,1,1,1 "access_crm_lead_manager","crm.lead.manager","model_crm_lead","base.group_sale_manager",1,1,1,1 -"access_crm_phonecall_system","crm.phonecall.system","model_crm_phonecall","base.group_system",1,0,0,0 "access_crm_phonecall_manager","crm.phonecall.manager","model_crm_phonecall","base.group_sale_manager",1,1,1,1 "access_crm_case_categ","crm.case.categ","model_crm_case_categ","base.group_user",1,0,0,0 "access_crm_meeting","crm.meeting","model_crm_meeting","base.group_sale_salesman",1,1,1,0 @@ -18,7 +17,6 @@ "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_categ","crm.case.categ","model_crm_case_categ","base.group_system",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_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 @@ -36,30 +34,11 @@ "access_res_partner","res.partner.crm.user","base.model_res_partner","base.group_sale_salesman",1,1,1,0 "access_res_partner_address","res.partner.address.crm.user","base.model_res_partner_address","base.group_sale_salesman",1,1,1,0 "access_res_partner_category","res.partner.category.crm.user","base.model_res_partner_category","base.group_sale_salesman",1,1,1,0 -"mail_gateway_mailgate_message","mail_gateway.mailgate.message","mail_gateway.model_mailgate_message","base.group_system",1,1,1,1 "mail_gateway_mailgate_thread","mail_gateway.mailgate.thread","mail_gateway.model_mailgate_thread","base.group_sale_salesman",1,1,1,1 "mail_gateway_mailgate_message_user","mail_gateway.mailgate.message.user","mail_gateway.model_mailgate_message","base.group_sale_salesman",1,1,1,1 -"access_base_res_bank_system","base.res.bank system","base.model_res_bank","base.group_system",1,1,1,1 -"access_crm_case_stage_system","crm.case.stage system","model_crm_case_stage","base.group_system",1,1,1,1 "access_crm_case_categ_manager","crm.case.categ manager","model_crm_case_categ","base.group_sale_manager",1,1,1,1 -"access_crm_case_resource_type_system","crm.case.resource.type system","model_crm_case_resource_type","base.group_system",1,1,1,1 -"access_crm_case_section_system","crm.case.section system","model_crm_case_section","base.group_system",1,1,1,1 -"access_crm_lead_report_system","crm.lead.report system","model_crm_lead_report","base.group_system",1,1,1,1 -"access_base_res_country_system","base.res.country system","base.model_res_country","base.group_system",1,1,1,1 -"access_base_res_country_state_system","base.res.country.state system","base.model_res_country_state","base.group_system",1,1,1,1 "access_base_action_rule_manager","base.action.rule manager","model_base_action_rule","base.group_sale_manager",1,1,1,1 -"access_base_action_rule_system","base.action.rule system","model_base_action_rule","base.group_system",1,1,1,1 -"access_crm_segmentation_system","crm.segmentation system","model_crm_segmentation","base.group_system",1,1,1,1 -"access_crm_segmentation_line_system","crm.segmentation.line system","model_crm_segmentation_line","base.group_system",1,1,1,1 -"access_base_calendar_res_alarm_system","base.calendar.res.alarm system","base_calendar.model_res_alarm","base.group_system",1,1,1,1 -"access_res_partner_address_system","res.partner.address system","base.model_res_partner_address","base.group_system",1,0,0,0 "access_crm_lead_report_user","crm.lead.report user","model_crm_lead_report","base.group_sale_salesman",1,1,1,1 -"access_base_res_partner_canal_system","base.res.partner.canal system","base.model_res_partner_canal","base.group_system",1,1,1,1 -"access_res_partner_category_system","res.partner.category system","base.model_res_partner_category","base.group_system",1,1,1,1 -"access_res_partner_title_system","res.partner.title system","base.model_res_partner_title","base.group_system",1,1,1,1 -"access_crm_lead_system","crm.lead.system","model_crm_lead","base.group_system",1,0,0,0 -"access_crm_meeting_system","crm.meeting.system","model_crm_meeting","base.group_system",1,0,0,0 -"access_calendar_attendee_system","calendar.attendee.system","model_calendar_attendee","base.group_system",1,0,0,0 "access_res_partner_bank_type_crm_user","res.partner.bank.type.crm.user","base.model_res_partner_bank_type","base.group_sale_salesman",1,0,0,0 "access_res_partner_bank_type_crm_manager","res.partner.bank.type.crm.manager","base.model_res_partner_bank_type","base.group_sale_manager",1,0,0,0 "access_res_partner_canal_manager","res.partner.canal.manager","base.model_res_partner_canal","base.group_sale_manager",1,1,1,1 diff --git a/addons/crm_claim/crm_claim_view.xml b/addons/crm_claim/crm_claim_view.xml index 9839f03bd6d891dfbb52bbf0b1d465c63fbab424..975e8d33becdfc6acdbd231ea3e442c2adde5445 100644 --- a/addons/crm_claim/crm_claim_view.xml +++ b/addons/crm_claim/crm_claim_view.xml @@ -3,7 +3,7 @@ <data> <menuitem id="menu_config_claim" name="Claim" - groups="base.group_extended,base.group_system" + groups="base.group_extended" parent="base.menu_base_config" sequence="6" /> <!-- Claims categories --> @@ -15,6 +15,7 @@ <field name="view_id" ref="crm.crm_case_categ_tree-view"/> <field name="domain">[('object_id.model', '=', 'crm.claim')]</field> <field name="context">{'object_id':'crm.claim'}</field> + <field name="help">Create claim categories to better manage and classify your claims. Some example of claims can be: preventive action, corrective action.</field> </record> <menuitem action="crm_claim_categ_action" name="Categories" @@ -30,6 +31,7 @@ <field name="view_id" ref="crm.crm_case_stage_tree"/> <field name="domain">[('object_id.model', '=', 'crm.claim')]</field> <field name="context">{'object_id':'crm.claim'}</field> + <field name="help">You can create claim stages to categorize the status of every claim entered in the system. The stages define all the steps required for the resolution of a claim.</field> </record> <menuitem action="crm_claim_stage_act" name="Stages" diff --git a/addons/crm_claim/security/ir.model.access.csv b/addons/crm_claim/security/ir.model.access.csv index e2563f7541a5c7e04d8187a1af48d77706d6f08b..ac2752f58b22bcd0b8e02f6434b03faab6d6f317 100644 --- a/addons/crm_claim/security/ir.model.access.csv +++ b/addons/crm_claim/security/ir.model.access.csv @@ -2,4 +2,3 @@ "access_crm_claim_manager","crm.claim.manager","model_crm_claim","base.group_sale_manager",1,1,1,1 "access_crm_claim_user","crm.claim.user","model_crm_claim","base.group_sale_salesman",1,1,1,0 "access_crm_claim_report_manager","crm.claim.report.manager","model_crm_claim_report","base.group_sale_manager",1,1,1,1 -"access_crm_claim_system","crm.claim.system","model_crm_claim","base.group_system",1,0,0,0 diff --git a/addons/crm_fundraising/crm_fundraising_view.xml b/addons/crm_fundraising/crm_fundraising_view.xml index 51650f8b7d5a3a5b1941e8a6a5f81a6c5e83dca3..eea653a4d489c179e675f0d04560868f53784a46 100644 --- a/addons/crm_fundraising/crm_fundraising_view.xml +++ b/addons/crm_fundraising/crm_fundraising_view.xml @@ -15,6 +15,7 @@ <field name="view_id" ref="crm.crm_case_categ_tree-view"/> <field name="domain">[('object_id.model', '=', 'crm.fundraising')]</field> <field name="context">{'object_id':'crm.fundraising'}</field> + <field name="help">Manage and define the fund raising categories you want to be maintained in the system.</field> </record> <menuitem action="crm_fund_categ_action" name="Categories" @@ -30,6 +31,7 @@ <field name="view_id" ref="crm.crm_case_stage_tree"/> <field name="domain">[('object_id.model', '=', 'crm.fundraising')]</field> <field name="context">{'object_id':'crm.fundraising'}</field> + <field name="help">Create and manage fund raising activity categories you want to be maintained in the system.</field> </record> <menuitem action="crm_fundraising_stage_act" diff --git a/addons/crm_fundraising/security/ir.model.access.csv b/addons/crm_fundraising/security/ir.model.access.csv index 53d593589d4a8c3852881935bf64dba4cea38c5b..703c899c0961f3230ee9d63697b1407578233d2e 100644 --- a/addons/crm_fundraising/security/ir.model.access.csv +++ b/addons/crm_fundraising/security/ir.model.access.csv @@ -3,4 +3,3 @@ "access_crm_fundraising_user","crm.fundraising.user","model_crm_fundraising","base.group_sale_salesman",1,1,1,0 "access_crm_fundraising_report_user","crm.fundraising.report.user","model_crm_fundraising_report","base.group_sale_salesman",1,0,0,0 "access_crm_fundraising_report_manager","crm.fundraising.report.manager","model_crm_fundraising_report","base.group_sale_manager",1,1,1,1 -"access_crm_fundraising_system","crm.fundraising.system","model_crm_fundraising","base.group_system",1,0,0,0 diff --git a/addons/crm_helpdesk/crm_helpdesk_view.xml b/addons/crm_helpdesk/crm_helpdesk_view.xml index 9c0fe7ac254d5cdf35cfd8079f8ffe26b61ea8c3..55eaf16ff856ba5dc423021eb6a6ad0cb4caf5ce 100644 --- a/addons/crm_helpdesk/crm_helpdesk_view.xml +++ b/addons/crm_helpdesk/crm_helpdesk_view.xml @@ -15,6 +15,7 @@ <field name="view_id" ref="crm.crm_case_categ_tree-view"/> <field name="domain">[('object_id.model', '=', 'crm.helpdesk')]</field> <field name="context">{'object_id':'crm.helpdesk'}</field> + <field name="help">Create and manage helpdesk categories to better manage and classify your support request.</field> </record> <menuitem action="crm_helpdesk_categ_action" name="Categories" diff --git a/addons/crm_helpdesk/security/ir.model.access.csv b/addons/crm_helpdesk/security/ir.model.access.csv index 79cac379f91b1fdc81a5082b93d22e5f02fd18a9..2a0d87851220f94377eaae066fc17da964d762c0 100644 --- a/addons/crm_helpdesk/security/ir.model.access.csv +++ b/addons/crm_helpdesk/security/ir.model.access.csv @@ -2,4 +2,3 @@ "access_crm_helpdesk_manager","crm.helpdesk.manager","model_crm_helpdesk","base.group_sale_manager",1,1,1,1 "access_crm_helpdesk_user","crm.helpdesk.user","model_crm_helpdesk","base.group_sale_salesman",1,1,1,0 "access_report_crm_helpdesk_manager","report.crm.helpdesk.manager","model_crm_helpdesk_report","base.group_sale_manager",1,1,1,1 -"access_crm_helpdesk_system","crm.helpdesk.system","model_crm_helpdesk","base.group_system",1,0,0,0 diff --git a/addons/crm_profiling/i18n/sr.po b/addons/crm_profiling/i18n/sr.po index a9e8c5a0a5d2fc26db09b8c4fcf904f65958eff7..3f30558a333bc871bdf55aab7d23767f9db4a6c8 100644 --- a/addons/crm_profiling/i18n/sr.po +++ b/addons/crm_profiling/i18n/sr.po @@ -8,13 +8,13 @@ msgstr "" "Project-Id-Version: openobject-addons\n" "Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n" "POT-Creation-Date: 2009-08-28 16:01+0000\n" -"PO-Revision-Date: 2010-10-15 11:26+0000\n" -"Last-Translator: zmmaj <Unknown>\n" +"PO-Revision-Date: 2010-10-16 09:53+0000\n" +"Last-Translator: OpenERP Administrators <Unknown>\n" "Language-Team: Serbian <sr@li.org>\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2010-10-16 04:48+0000\n" +"X-Launchpad-Export-Date: 2010-10-17 04:53+0000\n" "X-Generator: Launchpad (build Unknown)\n" #. module: crm_profiling diff --git a/addons/crm_profiling/security/ir.model.access.csv b/addons/crm_profiling/security/ir.model.access.csv index f60a6041c9f8393d514a5c287fb86c3c8e81e758..6ba022b2535e3fc679914ac5b0459e1aa50c9ff3 100644 --- a/addons/crm_profiling/security/ir.model.access.csv +++ b/addons/crm_profiling/security/ir.model.access.csv @@ -1,7 +1,4 @@ "id","name","model_id:id","group_id:id","perm_read","perm_write","perm_create","perm_unlink" -"access_crm_profiling_question","crm_profiling.question","model_crm_profiling_question","base.group_system",1,1,1,1 -"access_crm_profiling_questionnaire_manager","crm_profiling.questionnaire manager","model_crm_profiling_questionnaire","base.group_system",1,1,1,1 -"access_crm_profiling_answer_system","crm_profiling.answer system","model_crm_profiling_answer","base.group_system",1,1,1,1 "access_crm_profiling_answer_user","crm_profiling.answer user","model_crm_profiling_answer","base.group_sale_salesman",1,1,1,0 "access_crm_profiling_answer_manager","crm_profiling.answer manager","model_crm_profiling_answer","base.group_sale_manager",1,0,0,0 "access_crm_profiling_question_manager","crm_profiling.question manager","model_crm_profiling_question","base.group_sale_salesman",1,1,1,0 diff --git a/addons/decimal_precision/i18n/ru.po b/addons/decimal_precision/i18n/ru.po index 9540d91649196fe489cee312db5eefe5e0a6b268..f9d9d6a3f5be06c9ec36fcf61052b2dea20fadfa 100644 --- a/addons/decimal_precision/i18n/ru.po +++ b/addons/decimal_precision/i18n/ru.po @@ -8,13 +8,13 @@ msgstr "" "Project-Id-Version: openobject-addons\n" "Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n" "POT-Creation-Date: 2010-08-20 05:24+0000\n" -"PO-Revision-Date: 2010-10-15 12:07+0000\n" +"PO-Revision-Date: 2010-10-16 10:39+0000\n" "Last-Translator: Nikolay Chesnokov <chesnokov_n@msn.com>\n" "Language-Team: Russian <ru@li.org>\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2010-10-16 04:48+0000\n" +"X-Launchpad-Export-Date: 2010-10-17 04:53+0000\n" "X-Generator: Launchpad (build Unknown)\n" #. module: decimal_precision diff --git a/addons/decimal_precision/i18n/sr.po b/addons/decimal_precision/i18n/sr.po new file mode 100644 index 0000000000000000000000000000000000000000..df13c1328b85eda3d30d44d3713b68cb04a24831 --- /dev/null +++ b/addons/decimal_precision/i18n/sr.po @@ -0,0 +1,88 @@ +# Serbian 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 <EMAIL@ADDRESS>, 2010. +# +msgid "" +msgstr "" +"Project-Id-Version: openobject-addons\n" +"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n" +"POT-Creation-Date: 2010-08-20 05:24+0000\n" +"PO-Revision-Date: 2010-10-16 17:13+0000\n" +"Last-Translator: zmmaj <Unknown>\n" +"Language-Team: Serbian <sr@li.org>\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2010-10-17 04:53+0000\n" +"X-Generator: Launchpad (build Unknown)\n" + +#. module: decimal_precision +#: field:decimal.precision,digits:0 +msgid "Digits" +msgstr "Brojevi" + +#. module: decimal_precision +#: constraint:ir.ui.view:0 +msgid "Invalid XML for View Architecture!" +msgstr "Nevažeći XML za pregled arhitekture" + +#. module: decimal_precision +#: constraint:ir.model:0 +msgid "" +"The Object name must start with x_ and not contain any special character !" +msgstr "" +"Ime objekta mora da poÄinje sa x_ i ne sme da sadrži specijalne karaktere !" + +#. module: decimal_precision +#: constraint:ir.actions.act_window:0 +msgid "Invalid model name in the action definition." +msgstr "PogreÅ¡no ime modela u definiciji akcije." + +#. module: decimal_precision +#: view:decimal.precision:0 +msgid "Decimal Precision" +msgstr "Decimalna Preiznost" + +#. module: decimal_precision +#: model:ir.actions.act_window,name:decimal_precision.action_decimal_precision_form +#: model:ir.ui.menu,name:decimal_precision.menu_decimal_precision_form +msgid "Decimal Accuracy Definitions" +msgstr "Definicija Decimalne Preciznosti" + +#. module: decimal_precision +#: model:ir.module.module,description:decimal_precision.module_meta_information +msgid "" +"\n" +"This module allows to configure the price accuracy you need for different " +"kind\n" +"of usage: accounting, sales, purchases, ...\n" +"\n" +"The decimal precision is configured per company.\n" +msgstr "" +"\n" +"Ovaj modul vam omogucava za zaokruzujete cene na potrebne vrednosti za " +"nekoliko nacina\n" +"koriscenja: Racunanje, prodaja, nabavka ...\n" +"\n" +"Preciznost definisete za celo preduzece.\n" + +#. module: decimal_precision +#: constraint:ir.ui.menu:0 +msgid "Error ! You can not create recursive Menu." +msgstr "Greska! Ne mozete kreirati rekursivni meni." + +#. module: decimal_precision +#: field:decimal.precision,name:0 +msgid "Usage" +msgstr "Koriscenje" + +#. module: decimal_precision +#: model:ir.module.module,shortdesc:decimal_precision.module_meta_information +msgid "Decimal Precision Configuration" +msgstr "Podesavanje Decimalne Preciznosti" + +#. module: decimal_precision +#: model:ir.model,name:decimal_precision.model_decimal_precision +msgid "decimal.precision" +msgstr "decimal.precision" diff --git a/addons/decimal_precision/security/ir.model.access.csv b/addons/decimal_precision/security/ir.model.access.csv index f01ff24e34f912069327a46efebed20abce5a171..d53a5fef14125463dddff8a58a9e5540abc3e6c8 100644 --- a/addons/decimal_precision/security/ir.model.access.csv +++ b/addons/decimal_precision/security/ir.model.access.csv @@ -1,2 +1,3 @@ "id","name","model_id:id","group_id:id","perm_read","perm_write","perm_create","perm_unlink" -"access_decimal_precision","decimal.precision","model_decimal_precision",base.group_system,1,1,1,1 +"access_decimal_precision_config","decimal.precision configuration","model_decimal_precision",base.group_system,1,1,1,1 +"access_decimal_precision_all","decimal.precision","model_decimal_precision",,1,0,0,0 diff --git a/addons/delivery/delivery_data.xml b/addons/delivery/delivery_data.xml index 97e841ead45cb6b85a92b57a4709e072e871325e..ff0c90ad193cbe76c96ad8298a9a4e438b9c4e95 100644 --- a/addons/delivery/delivery_data.xml +++ b/addons/delivery/delivery_data.xml @@ -5,5 +5,54 @@ <field name="name">property_delivery_carrier</field> <field name="fields_id" search="[('model','=','res.partner'),('name','=','property_delivery_carrier')]"/> </record> + + <!-- Create a transporter --> + + <record id="delivery_partner" model="res.partner"> + <field name="name">The Poste</field> + </record> + <record id="delivery_partner_address" model="res.partner.address"> + <field name="type">default</field> + <field name="partner_id" ref="delivery_partner"/> + </record> + + <!-- Create a partner --> + + <record id="delivery_product" model="product.product"> + <field name="name">Delivery by Poste</field> + <field name="type">service</field> + <field model="product.category" name="categ_id" search="[]"/> + </record> + + <!-- Carrier --> + + <record id="delivery_carrier" model="delivery.carrier"> + <field name="name">The Poste</field> + <field name="partner_id" ref="delivery_partner"/> + <field name="product_id" ref="delivery_product"/> + </record> + + <!-- Carrier Grids --> + + <record id="delivery_grid" model="delivery.grid"> + <field name="name">The Poste - Pricelist</field> + <field name="carrier_id" ref="delivery_carrier"/> + </record> + <record id="delivery_grid_line1" model="delivery.grid.line"> + <field name="name">Weight <= 5kg</field> + <field name="grid_id" ref="delivery_grid"/> + <field eval="5" name="max_value"/> + <field eval="20" name="list_price"/> + <field eval="10" name="standard_price"/> + </record> + <record id="delivery_grid_line2" model="delivery.grid.line"> + <field name="name">Weight > 5kg</field> + <field name="grid_id" ref="delivery_grid"/> + <field name="operator">>=</field> + <field eval="5" name="max_value"/> + <field eval="50" name="list_price"/> + <field eval="30" name="standard_price"/> + </record> + </data> </openerp> diff --git a/addons/delivery/delivery_demo.xml b/addons/delivery/delivery_demo.xml index 2c05d4567a5119d31a346fb4778a28fc1809e528..f247c53ed829808384cd41d6ddc1e412ec345b7a 100644 --- a/addons/delivery/delivery_demo.xml +++ b/addons/delivery/delivery_demo.xml @@ -1,64 +1,14 @@ <?xml version="1.0" encoding="utf-8"?> <openerp> <data noupdate="1"> - <!-- Create a transporter --> - - <record id="delivery_partner" model="res.partner"> - <field name="name">The Poste</field> - <field name="website">http://www.openerp.com</field> - </record> - <record id="delivery_partner_address" model="res.partner.address"> - <field name="name">Fabien Pinckaers</field> - <field name="type">default</field> - <field name="partner_id" ref="delivery_partner"/> - </record> - - <!-- Create a partner --> - - <record id="delivery_product" model="product.product"> - <field name="name">Delivery by Poste</field> - <field name="type">service</field> - <field model="product.category" name="categ_id" search="[]"/> - </record> - - <!-- Carrier --> - - <record id="delivery_carrier" model="delivery.carrier"> - <field name="name">The Poste - Express</field> - <field name="partner_id" ref="delivery_partner"/> - <field name="product_id" ref="delivery_product"/> - </record> - - <!-- Carrier Grids --> - - <record id="delivery_grid" model="delivery.grid"> - <field name="name">The Poste Express - Pricelist</field> - <field name="carrier_id" ref="delivery_carrier"/> - </record> <record id="delivery_grid_line3" model="delivery.grid.line"> - <field name="name">Franco, price >= 300</field> - <field name="grid_id" ref="delivery_grid"/> + <field name="name">Free if price >= 300</field> + <field name="grid_id" ref="delivery.delivery_grid"/> <field eval="300" name="max_value"/> <field name="operator">>=</field> <field name="type">price</field> <field eval="0" name="list_price"/> <field eval="20" name="standard_price"/> </record> - <record id="delivery_grid_line1" model="delivery.grid.line"> - <field name="name">Weight <= 250</field> - <field name="grid_id" ref="delivery_grid"/> - <field eval="250" name="max_value"/> - <field eval="100" name="list_price"/> - <field eval="80" name="standard_price"/> - </record> - <record id="delivery_grid_line2" model="delivery.grid.line"> - <field name="name">Weight > 250</field> - <field name="grid_id" ref="delivery_grid"/> - <field name="operator">>=</field> - <field eval="250" name="max_value"/> - <field eval="120" name="list_price"/> - <field eval="100" name="standard_price"/> - </record> - </data> </openerp> diff --git a/addons/delivery/delivery_view.xml b/addons/delivery/delivery_view.xml index 3d03235d872ae3d71e23bbdfaef68dd33a9f4c32..b7ec0fed61e53989977e7b7cce59b81c9dc65537 100644 --- a/addons/delivery/delivery_view.xml +++ b/addons/delivery/delivery_view.xml @@ -35,8 +35,9 @@ <field name="res_model">delivery.carrier</field> <field name="view_type">form</field> <field name="view_mode">tree,form</field> + <field name="help">Create and manage the delivery method(s) you want your sales to be processed with. Each delivery method can be assigned to a pricelist which computes the price of the delivery according to the products sold or delivered.</field> </record> - <menuitem action="action_delivery_carrier_form" id="menu_action_delivery_carrier_form" parent="menu_delivery" groups="base.group_system"/> + <menuitem action="action_delivery_carrier_form" id="menu_action_delivery_carrier_form" parent="menu_delivery" groups="base.group_extended"/> <!-- Delivery Grids --> <record id="view_delivery_grid_tree" model="ir.ui.view"> @@ -84,6 +85,7 @@ <field name="res_model">delivery.grid</field> <field name="view_type">form</field> <field name="view_mode">tree,form</field> + <field name="help">The delivery pricelist allows you to compute the cost and sales price of the delivery based on the weight of the products and other criteria. You can define several pricelists for one delivery method, for each region such as countries or a zone in a specific country defined by a zip code range.</field> </record> <menuitem action="action_delivery_grid_form" id="menu_action_delivery_grid_form" parent="menu_delivery"/> @@ -232,10 +234,13 @@ <field name="model">stock.move</field> <field name="inherit_id" ref="stock.view_move_form"/> <field name="arch" type="xml"> - <field name="product_uom" position="after"> - <field name="weight"/> - <field name="weight_net"/> - </field> + <group colspan="2" col="2" position="after"> + <group colspan="2" col="2" groups="base.group_extended"> + <separator string="Weights" colspan="2"/> + <field name="weight"/> + <field name="weight_net"/> + </group> + </group> </field> </record> @@ -245,10 +250,13 @@ <field name="model">stock.move</field> <field name="inherit_id" ref="stock.view_move_form_reception_picking"/> <field name="arch" type="xml"> - <field name="product_uom" position="after"> - <field name="weight"/> - <field name="weight_net"/> - </field> + <group colspan="2" col="2" position="after"> + <group colspan="2" col="2" groups="base.group_extended"> + <separator string="Weights" colspan="2"/> + <field name="weight"/> + <field name="weight_net"/> + </group> + </group> </field> </record> diff --git a/addons/delivery/i18n/ru.po b/addons/delivery/i18n/ru.po index dafebaa043b7b82e2ada34faf3d99360945955d5..1049fb707fe825a0ea1f4fdb6c4b2945cacde573 100644 --- a/addons/delivery/i18n/ru.po +++ b/addons/delivery/i18n/ru.po @@ -7,13 +7,13 @@ msgstr "" "Project-Id-Version: OpenERP Server 6.0dev\n" "Report-Msgid-Bugs-To: support@openerp.com\n" "POT-Creation-Date: 2009-08-28 16:01+0000\n" -"PO-Revision-Date: 2010-10-15 12:51+0000\n" +"PO-Revision-Date: 2010-10-16 09:49+0000\n" "Last-Translator: Nikolay Chesnokov <chesnokov_n@msn.com>\n" "Language-Team: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2010-10-16 04:47+0000\n" +"X-Launchpad-Export-Date: 2010-10-17 04:53+0000\n" "X-Generator: Launchpad (build Unknown)\n" #. module: delivery diff --git a/addons/delivery/security/ir.model.access.csv b/addons/delivery/security/ir.model.access.csv index 409fba3becd0e4ec52d2df8795e24814aab94887..52e60995519b229d19ca0897ae7709f374e35229 100644 --- a/addons/delivery/security/ir.model.access.csv +++ b/addons/delivery/security/ir.model.access.csv @@ -6,6 +6,3 @@ "access_delivery_grid_manager","delivery.grid","model_delivery_grid","base.group_sale_manager",1,1,1,1 "access_delivery_grid_line_manager","delivery.grid.line","model_delivery_grid_line","base.group_sale_manager",1,1,1,1 "access_delivery_carrier_partner_manager","delivery.carrier partner_manager","model_delivery_carrier","base.group_partner_manager",1,0,0,0 -"access_delivery_carrier_stock_system","delivery.carrier stock_system","model_delivery_carrier","base.group_system",1,1,1,1 -"access_delivery_grid_system","delivery.grid.system","model_delivery_grid","base.group_system",1,1,1,1 -"access_delivery_grid_line_system","delivery.grid.line.system","model_delivery_grid_line","base.group_system",1,1,1,1 diff --git a/addons/document/document_data.xml b/addons/document/document_data.xml index f13213034e8a350ce64e7c5c341c3c9fe0034826..ef829b6e2582f15adf5700d95c6f3bc004ed57f0 100644 --- a/addons/document/document_data.xml +++ b/addons/document/document_data.xml @@ -11,12 +11,12 @@ <record model="document.storage" id="storage_default"> <field name="name">Database storage</field> <field name="type">db</field> - <field name="user_id" ref="base.user_admin"/> + <field name="user_id" ref="base.user_root"/> </record> <record model="document.directory" id="dir_root"> <field name="name">Documents</field> - <field name="user_id" ref="base.user_admin"/> + <field name="user_id" ref="base.user_root"/> <field name="storage_id" ref="storage_default"/> <field name="ressource_id">0</field> </record> @@ -24,7 +24,7 @@ <record model="document.directory" id="dir_my_folder"> <field name="name">My Folder</field> <field name="parent_id" ref="dir_root"/> - <field name="user_id" ref="base.user_admin"/> + <field name="user_id" ref="base.user_root"/> <field name="ressource_id">0</field> </record> @@ -37,7 +37,7 @@ <field name="ressource_id">0</field> <field name="ressource_type_id" search="[('model','=','res.partner.category')]" /> - <field name="user_id" ref="base.user_admin"/> + <field name="user_id" ref="base.user_root"/> </record> <record model="document.directory" id="dir_partner"> @@ -46,7 +46,7 @@ <field name="domain">[('category_id','in',[active_id])]</field> <field name="ressource_type_id" search="[('model','=','res.partner')]" /> <field name="ressource_parent_type_id" search="[('model','=','res.partner.category')]" /> - <field name="user_id" ref="base.user_admin"/> + <field name="user_id" ref="base.user_root"/> <field name="ressource_id">0</field> </record> @@ -62,7 +62,7 @@ <record model="document.directory" id="dir_product"> <field name="name">Products</field> - <field name="user_id" ref="base.user_admin"/> + <field name="user_id" ref="base.user_root"/> <field name="parent_id" ref="dir_root"/> <field name="ressource_id">0</field> @@ -70,7 +70,7 @@ <record model="document.directory" id="dir_sale_order"> <field name="name">Sales Order</field> - <field name="user_id" ref="base.user_admin"/> + <field name="user_id" ref="base.user_root"/> <field name="parent_id" ref="dir_root"/> <field name="ressource_id">0</field> @@ -78,7 +78,7 @@ <record model="document.directory" id="dir_sale_order_all"> <field name="name">All Sales Order</field> - <field name="user_id" ref="base.user_admin"/> + <field name="user_id" ref="base.user_root"/> <field name="parent_id" ref="dir_sale_order"/> <field name="ressource_id">0</field> @@ -86,7 +86,7 @@ <record model="document.directory" id="dir_sale_order_quote"> <field name="name">Quotations</field> - <field name="user_id" ref="base.user_admin"/> + <field name="user_id" ref="base.user_root"/> <field name="parent_id" ref="dir_sale_order"/> <field name="ressource_id">0</field> @@ -94,7 +94,7 @@ <record model="document.directory" id="dir_project"> <field name="name">Projects</field> - <field name="user_id" ref="base.user_admin"/> + <field name="user_id" ref="base.user_root"/> <field name="parent_id" ref="dir_root"/> <field name="ressource_id">0</field> diff --git a/addons/document/i18n/sr.po b/addons/document/i18n/sr.po new file mode 100644 index 0000000000000000000000000000000000000000..5ee380e07854dc10127c8da8d151e69e9200e57e --- /dev/null +++ b/addons/document/i18n/sr.po @@ -0,0 +1,653 @@ +# Serbian 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 <EMAIL@ADDRESS>, 2010. +# +msgid "" +msgstr "" +"Project-Id-Version: openobject-addons\n" +"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n" +"POT-Creation-Date: 2009-08-28 16:01+0000\n" +"PO-Revision-Date: 2010-10-16 18:19+0000\n" +"Last-Translator: zmmaj <Unknown>\n" +"Language-Team: Serbian <sr@li.org>\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2010-10-17 04:53+0000\n" +"X-Generator: Launchpad (build Unknown)\n" + +#. module: document +#: field:document.directory,create_date:0 +msgid "Date Created" +msgstr "Datum kreiranja" + +#. module: document +#: field:document.directory,ressource_id:0 +msgid "Resource ID" +msgstr "Å ifra resursa" + +#. module: document +#: field:document.directory.content,include_name:0 +msgid "Include Record Name" +msgstr "UkljuÄi naziv zapisa" + +#. module: document +#: constraint:ir.model:0 +msgid "" +"The Object name must start with x_ and not contain any special character !" +msgstr "" +"Ime objekta mora da poÄinje sa x_ i ne sme da sadrži specijalne karaktere !" + +#. module: document +#: field:ir.actions.report.xml,model_id:0 +msgid "Model Id" +msgstr "ID modela" + +#. module: document +#: constraint:document.directory:0 +msgid "Error! You can not create recursive Directories." +msgstr "GreÅ¡ka! Ne možete kreirati rekurzivne direktorijume." + +#. module: document +#: model:ir.ui.menu,name:document.menu_document_configuration +msgid "Document Configuration" +msgstr "Podesavanja Dokumenta" + +#. module: document +#: view:ir.attachment:0 +msgid "Preview" +msgstr "Pregled" + +#. module: document +#: field:ir.attachment,store_method:0 +msgid "Storing Method" +msgstr "Metoda cuvanja" + +#. module: document +#: model:ir.actions.act_window,name:document.action_config_auto_directory +msgid "Auto Configure Directory" +msgstr "Auto Podesavanje Direktorijuma" + +#. module: document +#: field:ir.attachment,file_size:0 +msgid "File Size" +msgstr "VeliÄina Datoteke" + +#. module: document +#: help:document.directory.content,include_name:0 +msgid "" +"Check this field if you want that the name of the file start by the record " +"name." +msgstr "" +"UkljuÄite ovu opciju ako želite da naziv datoteke poÄinje s nazivom zapisa" + +#. module: document +#: selection:document.directory,type:0 +msgid "Other Resources" +msgstr "Drugi resursi" + +#. module: document +#: field:document.directory,ressource_parent_type_id:0 +msgid "Parent Model" +msgstr "Roditeljski Model" + +#. module: document +#: view:document.configuration.wizard:0 +msgid "Document Management System." +msgstr "Sistem za Upravljanje Dokumentima" + +#. module: document +#: view:ir.attachment:0 +msgid "Attachment" +msgstr "Dodatak" + +#. module: document +#: constraint:ir.actions.act_window:0 +msgid "Invalid model name in the action definition." +msgstr "PogreÅ¡no ime modela u definiciji akcije." + +#. module: document +#: selection:document.directory,type:0 +msgid "Static Directory" +msgstr "StatiÄki Direktorijum" + +#. module: document +#: model:ir.model,name:document.model_document_directory_content_type +msgid "Directory Content Type" +msgstr "Tip sadržaja Direktoriuma" + +#. module: document +#: help:document.directory,domain:0 +msgid "" +"Use a domain if you want to apply an automatic filter on visible resources." +msgstr "" +"Koristite domen ako želite postaviti automatski filter nad vidljivim " +"resursima" + +#. module: document +#: help:document.directory,ressource_tree:0 +msgid "" +"Check this if you want to use the same tree structure as the object selected " +"in the system." +msgstr "" +"Odaberite ovu opciju ako želite koristiti istu strukturu stabla kao odabrani " +"objekat sistema." + +#. module: document +#: field:document.directory,type:0 +msgid "Type" +msgstr "Tip" + +#. module: document +#: model:ir.actions.act_window,name:document.action_document_directory_tree +#: model:ir.ui.menu,name:document.menu_document_directories_tree +msgid "Directorie's Structure" +msgstr "Struktura Direktorijuma" + +#. module: document +#: field:document.directory,parent_id:0 +msgid "Parent Item" +msgstr "Roditeljska Stavka" + +#. module: document +#: view:ir.attachment:0 +msgid "File Information" +msgstr "Informacije o Fajlu" + +#. module: document +#: field:document.directory,file_ids:0 +#: view:ir.attachment:0 +msgid "Files" +msgstr "Fajlovi" + +#. module: document +#: field:ir.attachment,store_fname:0 +msgid "Stored Filename" +msgstr "Sacuvano IMe Fajla" + +#. module: document +#: field:document.directory,write_uid:0 +#: field:ir.attachment,write_uid:0 +msgid "Last Modification User" +msgstr "Korisnik poslednje promene" + +#. module: document +#: view:document.configuration.wizard:0 +msgid "Configure" +msgstr "Podesi" + +#. module: document +#: field:document.directory,ressource_tree:0 +msgid "Tree Structure" +msgstr "Struktura Stabla" + +#. module: document +#: field:ir.attachment,title:0 +msgid "Resource Title" +msgstr "Naslov resursa" + +#. module: document +#: model:ir.actions.todo,note:document.config_auto_directory +msgid "" +"This wizard will configure the URL of the server of the document management " +"system." +msgstr "" +"Ovaj ćecarobnjak podesiti URL server sistema za upravljanje dokumentima." + +#. module: document +#: model:ir.model,name:document.model_document_directory_content +msgid "Directory Content" +msgstr "Sadržaj Direktorijuma" + +#. module: document +#: help:document.directory,ressource_parent_type_id:0 +msgid "" +"If you put an object here, this directory template will appear bellow all of " +"these objects. Don't put a parent directory if you select a parent model." +msgstr "" +"Ako ovdje postavite objekt, predložak ove mape će biti prikazan ispod svih " +"takvih objekata. Nemojte postaviti mapu roditelja ako odabirete model " +"roditelja." + +#. module: document +#: model:ir.ui.menu,name:document.menu_document +msgid "Document Management" +msgstr "Upravljanje Dokumentima" + +#. module: document +#: selection:ir.attachment,store_method:0 +msgid "Link" +msgstr "Veza" + +#. module: document +#: view:document.directory:0 +msgid "Directory Type" +msgstr "Tip Direktorijuma" + +#. module: document +#: field:document.directory,group_ids:0 +#: field:ir.attachment,group_ids:0 +msgid "Groups" +msgstr "Grupe" + +#. module: document +#: field:document.directory.content,report_id:0 +msgid "Report" +msgstr "IzveÅ¡taj" + +#. module: document +#: help:document.configuration.wizard,host:0 +msgid "" +"Put here the server address or IP. Keep localhost if you don't know what to " +"write." +msgstr "" +"Ovdje upiÅ¡ite adresu servera ili IP adresu. Ostavite localhost ako ne znate " +"Å¡ta da napisete." + +#. module: document +#: view:document.configuration.wizard:0 +msgid "" +"This wizard will automatically configure the document management system " +"according to modules installed on your system." +msgstr "" +"Ovaj Carobnjak će automatski postaviti sistem za upravljanje dokumentima " +"ovisno o modulima koji su instalirani na vaÅ¡em sistemu." + +#. module: document +#: view:ir.attachment:0 +msgid "Data" +msgstr "Podaci" + +#. module: document +#: view:ir.attachment:0 +msgid "Notes" +msgstr "Napomene" + +#. module: document +#: view:ir.attachment:0 +#: field:ir.attachment,index_content:0 +msgid "Indexed Content" +msgstr "Indeksirani sadržaj" + +#. module: document +#: view:document.directory:0 +msgid "Definition" +msgstr "Definicija" + +#. module: document +#: constraint:ir.ui.view:0 +msgid "Invalid XML for View Architecture!" +msgstr "Nevažeći XML za pregled arhitekture" + +#. module: document +#: model:ir.module.module,description:document.module_meta_information +msgid "" +"This is a complete document management system:\n" +" * FTP Interface\n" +" * User Authentication\n" +" * Document Indexation\n" +msgstr "" +"Ovo je kompletni sistem za upravljanje dokumentima:\n" +"* FTP interfejs\n" +"* Autentifikacija korisnika\n" +"* Indeksiranje dokumenata\n" + +#. module: document +#: field:document.directory,name:0 +msgid "Name" +msgstr "Ime" + +#. module: document +#: field:document.directory.content.type,code:0 +msgid "Extension" +msgstr "Ekstenzija" + +#. module: document +#: selection:ir.attachment,store_method:0 +msgid "Database" +msgstr "Baza Podataka" + +#. module: document +#: field:document.directory,content_ids:0 +msgid "Virtual Files" +msgstr "Virtualne datoteke" + +#. module: document +#: view:document.directory:0 +#: model:ir.ui.menu,name:document.menu_document_directories +msgid "Directories" +msgstr "Direktorijumi" + +#. module: document +#: view:document.directory:0 +msgid "Seq." +msgstr "Sekv." + +#. module: document +#: model:ir.module.module,shortdesc:document.module_meta_information +msgid "Integrated Document Management System" +msgstr "Integrisani sistem za upravljanje dokumentima" + +#. module: document +#: field:document.directory.content,directory_id:0 +#: field:ir.attachment,parent_id:0 +msgid "Directory" +msgstr "Direktorijum" + +#. module: document +#: field:document.directory,user_id:0 +#: field:ir.attachment,user_id:0 +msgid "Owner" +msgstr "Vlasnik" + +#. module: document +#: model:ir.model,name:document.model_document_configuration_wizard +msgid "document.configuration.wizard" +msgstr "document.configuration.wizard" + +#. module: document +#: view:ir.attachment:0 +msgid "Attached To" +msgstr "Pridruženo" + +#. module: document +#: selection:ir.attachment,store_method:0 +msgid "Filesystem" +msgstr "Fajl sistem" + +#. module: document +#: field:document.directory,file_type:0 +#: field:document.directory.content.type,name:0 +#: field:ir.attachment,file_type:0 +msgid "Content Type" +msgstr "Tip Sadrzaja" + +#. module: document +#: view:document.directory:0 +#: view:ir.attachment:0 +msgid "Security" +msgstr "Bezbednost" + +#. module: document +#: model:ir.ui.menu,name:document.menu_document_browse +msgid "Browse Files Using FTP" +msgstr "Pregledaj datoteke koristeći FTP" + +#. module: document +#: field:document.directory,ressource_type_id:0 +msgid "Directories Mapped to Objects" +msgstr "Direktorijumi vezani uz objekte" + +#. module: document +#: view:ir.attachment:0 +msgid "History" +msgstr "Istorija" + +#. module: document +#: help:document.directory,ressource_type_id:0 +msgid "" +"Select an object here and Open ERP will create a mapping for each of these " +"objects, using the given domain, when browsing through FTP." +msgstr "" +"Ovdje odaberite objekt i Open ERP će uspostaviti mapiranje za svaki od ovih " +"objekata, koristeći zadani domen, prilikom predleda kroz FTP." + +#. module: document +#: view:ir.attachment:0 +msgid "Others Info" +msgstr "Ostale informacije" + +#. module: document +#: field:document.directory,domain:0 +msgid "Domain" +msgstr "Domen" + +#. module: document +#: field:document.directory,write_date:0 +#: field:ir.attachment,write_date:0 +msgid "Date Modified" +msgstr "Datum Izmene" + +#. module: document +#: field:document.directory.content,suffix:0 +msgid "Suffix" +msgstr "Sufiks" + +#. module: document +#: field:document.configuration.wizard,host:0 +msgid "Server Address" +msgstr "Adresa Servera" + +#. module: document +#: model:ir.actions.url,name:document.action_document_browse +msgid "Browse Files" +msgstr "Pretraži Fajlove" + +#. module: document +#: field:document.directory.content,name:0 +msgid "Content Name" +msgstr "Naziv sadržaja" + +#. module: document +#: model:ir.model,name:document.model_document_directory +#: field:process.node,directory_id:0 +msgid "Document directory" +msgstr "Direktorijum dokumenta" + +#. module: document +#: field:document.directory,create_uid:0 +msgid "Creator" +msgstr "Kreator" + +#. module: document +#: view:document.directory:0 +msgid "Auto-Generated Files" +msgstr "Auto-Generisani Fajlovi" + +#. module: document +#: field:document.directory.content,sequence:0 +msgid "Sequence" +msgstr "Sekvenca" + +#. module: document +#: model:ir.ui.menu,name:document.menu_document_files +msgid "Search a File" +msgstr "" + +#. module: document +#: view:document.configuration.wizard:0 +msgid "Auto Configure" +msgstr "Auto Podesavanje" + +#. module: document +#: view:document.configuration.wizard:0 +msgid "Cancel" +msgstr "Откажи" + +#. module: document +#: field:ir.attachment,partner_id:0 +msgid "Partner" +msgstr "Partner" + +#. module: document +#: view:document.directory:0 +msgid "PDF Report" +msgstr "PDF izveÅ¡taj" + +#. module: document +#: field:document.directory.content,extension:0 +msgid "Document Type" +msgstr "Tip Dokumenta" + +#. module: document +#: field:document.directory,child_ids:0 +msgid "Children" +msgstr "PodreÄ‘eni" + +#. module: document +#: view:document.directory:0 +msgid "Contents" +msgstr "Sadržaj" + +#. module: document +#: model:ir.actions.act_window,name:document.action_view_files_by_partner +msgid "Files Per Month" +msgstr "Falova za Mesec" + +#. module: document +#: model:ir.actions.act_window,name:document.action_view_wall +#: model:ir.ui.menu,name:document.menu_action_view_my_document_report_shame +#: view:report.document.wall:0 +msgid "Wall of Shame" +msgstr "Zid Srama" + +#. module: document +#: model:ir.model,name:document.model_report_files_partner +msgid "Files details by Partners" +msgstr "Detalji Fajlova po Partneru" + +#. module: document +#: model:ir.ui.menu,name:document.menu_action_view_my_document_report_all +msgid "All Months" +msgstr "Svi meseci" + +#. module: document +#: model:ir.ui.menu,name:document.menu_action_view_my_document_report_all_myfile +#: model:ir.ui.menu,name:document.menu_action_view_my_document_report_this_myfile +msgid "My files" +msgstr "Moji Fajlovi" + +#. module: document +#: view:report.document.user:0 +msgid "Files by users" +msgstr "Fajlovi po Korisniku" + +#. module: document +#: view:report.files.partner:0 +msgid "Files per Month" +msgstr "Fajlova za Mesec" + +#. module: document +#: model:ir.actions.act_window,name:document.action_view_my_document_tree1 +msgid "My files (All months)" +msgstr "Moji Fajlovi (svi Meseci)" + +#. module: document +#: field:report.document.wall,file_name:0 +msgid "Last Posted File Name" +msgstr "Zadnje postavljeno Ime Fajla" + +#. module: document +#: model:ir.ui.menu,name:document.menu_action_view_my_document_report +msgid "Reporting" +msgstr "IzveÅ¡tavanje" + +#. module: document +#: model:ir.model,name:document.model_report_document_wall +msgid "Users that did not inserted documents since one month" +msgstr "Korisnici koji jedan celi mjesec nisu unijeli Dokument" + +#. module: document +#: view:report.files.partner:0 +msgid "Files By Partner" +msgstr "Fajlovi po Partneru" + +#. module: document +#: model:ir.ui.menu,name:document.menu_action_view_my_document_report_this +msgid "This Month" +msgstr "Ovog meseca" + +#. module: document +#: field:report.document.user,user:0 field:report.document.wall,user:0 +msgid "User" +msgstr "Korisnik" + +#. module: document +#: model:ir.ui.menu,name:document.menu_action_view_my_document_report_all_userfile +#: model:ir.ui.menu,name:document.menu_action_view_my_document_report_this_userfile +msgid "All Users files" +msgstr "Svi Korisnikovi fajlovi" + +#. module: document +#: model:ir.actions.act_window,name:document.action_view_my_document_tree +msgid "My files (This months)" +msgstr "Moji Fajlovi(Ovaj Mesec)" + +#. module: document +#: model:ir.model,name:document.model_report_document_user +msgid "Files details by Users" +msgstr "Detalji fajlova po Korisnicima" + +#. module: document +#: field:report.document.file,nbr:0 field:report.document.user,nbr:0 +#: field:report.files.partner,nbr:0 +msgid "# of Files" +msgstr "# Fajlova" + +#. module: document +#: model:ir.actions.act_window,name:document.action_view_user_graph +msgid "Files By Users" +msgstr "Fajlovi po Korisnicima" + +#. module: document +#: model:ir.module.module,shortdesc:report_document.module_meta_information +msgid "Document Management - Reporting" +msgstr "Upravljanje Dokumentima - IzveÅ¡tavanje" + +#. module: document +#: model:ir.actions.act_window,name:document.action_view_all_document_tree1 +msgid "All Users files (All months)" +msgstr "Fajlovi svih Korisnika (Svi meseci)" + +#. module: document +#: model:ir.model,name:document.model_report_document_file +msgid "Files details by Directory" +msgstr "Detalji Fajlova po Direktorijumu" + +#. module: document +#: field:report.document.user,change_date:0 +#: field:report.files.partner,change_date:0 +msgid "Modified Date" +msgstr "Izmjenjen Datum" + +#. module: document +#: model:ir.actions.act_window,name:document.action_view_size_month +#: view:report.document.file:0 +msgid "File Size by Month" +msgstr "VeliÄina fajlova po Mesecu" + +#. module: document +#: field:report.document.user,file_title:0 +#: field:report.files.partner,file_title:0 +msgid "File Name" +msgstr "Ime fajla" + +#. module: document +#: field:report.document.file,month:0 field:report.document.user,month:0 +#: field:report.document.user,name:0 field:report.document.wall,month:0 +#: field:report.document.wall,name:0 field:report.files.partner,name:0 +msgid "Month" +msgstr "Mesec" + +#. module: document +#: model:ir.actions.act_window,name:document.action_view_files_by_month_graph +#: view:report.document.user:0 +msgid "Files by Month" +msgstr "Fajlovi po Mesecu" + +#. module: document +#: model:ir.actions.act_window,name:document.action_view_document_by_resourcetype_graph +#: view:report.document.user:0 +msgid "Files by Resource Type" +msgstr "Fajlovi po Tipu Izvora" + +#. module: document +#: model:ir.actions.act_window,name:document.action_view_all_document_tree +msgid "All Users files (This month)" +msgstr "Svi Korisnicki Fajlovi ( Ovaj Mesec)" + +#. module: document +#: field:report.document.wall,last:0 +msgid "Last Posted Time" +msgstr "Zadnje postavljeno Vrijeme" diff --git a/addons/document_email/__openerp__.py b/addons/document_email/__openerp__.py index 0348665ffa0e4847e3b8485f822923fa7e33df44..6f61ba628581b0920326659e1dcb7ad8a555fcae 100644 --- a/addons/document_email/__openerp__.py +++ b/addons/document_email/__openerp__.py @@ -25,7 +25,6 @@ "name" : "Email Integrated Document", "version" : "1.1", "depends" : ["base", "document", "fetchmail","mail_gateway"], - "author" : "Tiny", "description": """Email Integrated Document * Email based Document submission * user based document submission diff --git a/addons/document_ics/i18n/sr.po b/addons/document_ics/i18n/sr.po new file mode 100644 index 0000000000000000000000000000000000000000..1ea7c46633fa3f1d426c9ca5201e3cb0c36c6c7a --- /dev/null +++ b/addons/document_ics/i18n/sr.po @@ -0,0 +1,334 @@ +# Serbian 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 <EMAIL@ADDRESS>, 2010. +# +msgid "" +msgstr "" +"Project-Id-Version: openobject-addons\n" +"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n" +"POT-Creation-Date: 2009-08-28 16:01+0000\n" +"PO-Revision-Date: 2010-10-16 18:48+0000\n" +"Last-Translator: zmmaj <Unknown>\n" +"Language-Team: Serbian <sr@li.org>\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2010-10-17 04:53+0000\n" +"X-Generator: Launchpad (build Unknown)\n" + +#. module: document_ics +#: constraint:ir.model:0 +msgid "" +"The Object name must start with x_ and not contain any special character !" +msgstr "" +"Ime objekta mora da poÄinje sa x_ i ne sme da sadrži specijalne karaktere !" + +#. module: document_ics +#: selection:document.directory.ics.fields,name:0 +msgid "uid" +msgstr "uid" + +#. module: document_ics +#: constraint:document.directory:0 +msgid "Error! You can not create recursive Directories." +msgstr "GreÅ¡ka! Ne možete kreirati rekurzivne direktorijume." + +#. module: document_ics +#: field:document.ics.crm.wizard,jobs:0 +msgid "Jobs Hiring Process" +msgstr "Proces zapoÅ¡ljavanja" + +#. module: document_ics +#: view:document.ics.crm.wizard:0 +msgid "Configure Calendars for CRM Sections" +msgstr "Konfigurisi kalendare za CRM Sekcije" + +#. module: document_ics +#: field:document.ics.crm.wizard,helpdesk:0 +msgid "Helpdesk" +msgstr "Helpdesk" + +#. module: document_ics +#: field:document.directory.ics.fields,field_id:0 +msgid "Open ERP Field" +msgstr "Otvori ERP Polje" + +#. module: document_ics +#: view:document.ics.crm.wizard:0 +msgid "Next" +msgstr "Sledeće" + +#. module: document_ics +#: field:document.directory.ics.fields,content_id:0 +msgid "Content" +msgstr "Sadržaj" + +#. module: document_ics +#: field:document.ics.crm.wizard,meeting:0 +msgid "Calendar of Meetings" +msgstr "Kalendar Sastanaka" + +#. module: document_ics +#: model:crm.case.section,name:document_ics.section_meeting +msgid "Shared Calendar Meetings" +msgstr "Sastanci zajedniÄkog kalendara" + +#. module: document_ics +#: selection:document.directory.ics.fields,name:0 +msgid "url" +msgstr "url" + +#. module: document_ics +#: constraint:ir.actions.act_window:0 +msgid "Invalid model name in the action definition." +msgstr "PogreÅ¡no ime modela u definiciji akcije." + +#. module: document_ics +#: help:document.ics.crm.wizard,bugs:0 +msgid "Used by companies to track bugs and support requests on softwares" +msgstr "" +"KoriÅ¡ten od firmi za praćenje greÅ¡aka i zahteva za podrÅ¡kom na programima" + +#. module: document_ics +#: model:ir.actions.todo,note:document_ics.config_wizard_step_case_section_menu +msgid "" +"This Configuration step use to create Calendars in document for all Case " +"Sections" +msgstr "" +"Ovaj konfiguracioni korak se koristi za kreiranje kalendara u dokumentima ze " +"sve tipove Sekcija" + +#. module: document_ics +#: selection:document.directory.ics.fields,name:0 +msgid "dtend" +msgstr "dtend" + +#. module: document_ics +#: help:document.ics.crm.wizard,jobs:0 +msgid "" +"Help you to organise the jobs hiring process: evaluation, meetings, email " +"integration..." +msgstr "" +"Pomaže vam da organizujete proces zapoÅ¡ljavanja: procena, sastanci, " +"integracija elektronske poÅ¡te..." + +#. module: document_ics +#: selection:document.directory.ics.fields,name:0 +msgid "description" +msgstr "opis" + +#. module: document_ics +#: model:ir.actions.act_window,name:document_ics.action_view_document_ics_config_directories +msgid "Configure Calendars for Sections " +msgstr "Konfigurise Kalendare za Sekcije " + +#. module: document_ics +#: help:document.ics.crm.wizard,opportunity:0 +msgid "Tracks identified business opportunities for your sales pipeline." +msgstr "Prati prepoznate poslovne prilike za vaÅ¡u prodajnu mrezu." + +#. module: document_ics +#: help:document.ics.crm.wizard,fund:0 +msgid "" +"This may help associations in their fund raising process and tracking." +msgstr "" +"Ovo može pomoći saradnicima u procesu prikupljanja i praćenja sredstava za " +"finansiranje." + +#. module: document_ics +#: help:document.ics.crm.wizard,helpdesk:0 +msgid "Manages an Helpdesk service." +msgstr "Upravlja uslugom Helpdesk-a." + +#. module: document_ics +#: field:document.ics.crm.wizard,fund:0 +msgid "Fund Raising Operations" +msgstr "Operacije za skupljanje sredstava" + +#. module: document_ics +#: field:document.directory.content,ics_object_id:0 +msgid "Object" +msgstr "Objekat" + +#. module: document_ics +#: constraint:crm.case.section:0 +msgid "Error ! You cannot create recursive sections." +msgstr "GreÅ¡ka ! Ne možete stvarati rekurzivne sekcije." + +#. module: document_ics +#: model:ir.module.module,shortdesc:document_ics.module_meta_information +msgid "Support for iCal based on Document Management System" +msgstr "PodrÅ¡ka za iCal baziranom na sistemu za upravljanje dokumentima." + +#. module: document_ics +#: selection:document.directory.ics.fields,name:0 +msgid "location" +msgstr "polozaj" + +#. module: document_ics +#: view:document.directory:0 +msgid "ICS Calendar" +msgstr "ICS Kalendar" + +#. module: document_ics +#: field:document.directory.ics.fields,name:0 +msgid "ICS Value" +msgstr "ICS Vrednost" + +#. module: document_ics +#: model:ir.module.module,description:document_ics.module_meta_information +msgid "Allows to synchronise calendars with others applications." +msgstr "omogucava vam da sinhronisete kalendar sa ostalim aplikacijama" + +#. module: document_ics +#: constraint:ir.ui.view:0 +msgid "Invalid XML for View Architecture!" +msgstr "Nevažeći XML za pregled arhitekture" + +#. module: document_ics +#: help:document.ics.crm.wizard,lead:0 +msgid "" +"Allows you to track and manage prospects which are pre-sales requests or " +"contacts, the very first contact with a customer request." +msgstr "" +"Omogućava vam da pratite i upravljate prilikama koje ukljuÄuju predprodajne " +"zahteve ili kontakte, prvi kontakt s pitanjima korisnika." + +#. module: document_ics +#: field:document.ics.crm.wizard,name:0 +msgid "Name" +msgstr "Ime" + +#. module: document_ics +#: help:document.ics.crm.wizard,meeting:0 +msgid "Manages the calendar of meetings of the users." +msgstr "Upravlja kalendarom sastanaka korisnika" + +#. module: document_ics +#: field:document.directory.content,ics_domain:0 +msgid "Domain" +msgstr "Domen" + +#. module: document_ics +#: help:document.ics.crm.wizard,claims:0 +msgid "" +"Manages the supplier and customers claims, including your corrective or " +"preventive actions." +msgstr "" +"Upravlja pritužbama dobavljaÄa i kupaca, ukljuÄujući korektivne ili " +"preventivne akcije." + +#. module: document_ics +#: selection:document.directory.ics.fields,name:0 +msgid "last-modified" +msgstr "poslednja-promjena" + +#. module: document_ics +#: view:document.directory:0 +msgid "ICS Mapping" +msgstr "ICS mapiranje" + +#. module: document_ics +#: view:crm.case:0 +msgid "Duration(In Hour)" +msgstr "Trajanje (u satima)" + +#. module: document_ics +#: field:document.ics.crm.wizard,document_ics:0 +msgid "Shared Calendar" +msgstr "Deljeni Kalendar" + +#. module: document_ics +#: field:document.ics.crm.wizard,claims:0 +msgid "Claims" +msgstr "Pritužbe" + +#. module: document_ics +#: help:document.ics.crm.wizard,phonecall:0 +msgid "" +"Help you to encode the result of a phone call or to planify a list of phone " +"calls to process." +msgstr "" +"Pomaže vam pri unosu rezultata telefonskih poziva ili pri planiranju popisa " +"poziva za obradu." + +#. module: document_ics +#: selection:document.directory.ics.fields,name:0 +msgid "dtstart" +msgstr "dtstart" + +#. module: document_ics +#: field:document.ics.crm.wizard,phonecall:0 +msgid "Phone Calls" +msgstr "Telefonski Pozivi" + +#. module: document_ics +#: field:document.ics.crm.wizard,bugs:0 +msgid "Bug Tracking" +msgstr "Praćenje GreÅ¡aka" + +#. module: document_ics +#: selection:document.directory.ics.fields,name:0 +msgid "categories" +msgstr "kategorije" + +#. module: document_ics +#: field:document.ics.crm.wizard,lead:0 +msgid "Prospect" +msgstr "Prilika" + +#. module: document_ics +#: view:document.ics.crm.wizard:0 +msgid "Create Pre-Configured Calendars" +msgstr "Kreiraj predkonfigurisani Kalendar" + +#. module: document_ics +#: selection:document.directory.ics.fields,name:0 +msgid "created" +msgstr "Kreiran" + +#. module: document_ics +#: field:crm.case,code:0 +msgid "Calendar Code" +msgstr "Å ifra kalendara" + +#. module: document_ics +#: selection:document.directory.ics.fields,name:0 +msgid "summary" +msgstr "Sumarno" + +#. module: document_ics +#: model:ir.model,name:document_ics.model_document_ics_crm_wizard +msgid "document.ics.crm.wizard" +msgstr "document.ics.crm.wizard" + +#. module: document_ics +#: selection:document.directory.ics.fields,name:0 +msgid "attendee" +msgstr "prisutan" + +#. module: document_ics +#: model:ir.model,name:document_ics.model_document_directory_ics_fields +msgid "document.directory.ics.fields" +msgstr "document.directory.ics.fields" + +#. module: document_ics +#: field:document.directory.content,ics_field_ids:0 +msgid "Fields Mapping" +msgstr "Mapiranje polja" + +#. module: document_ics +#: view:document.ics.crm.wizard:0 +msgid "Cancel" +msgstr "Otkaži" + +#. module: document_ics +#: field:document.ics.crm.wizard,opportunity:0 +msgid "Business Opportunities" +msgstr "Poslovne Prilike" + +#. module: document_ics +#: selection:document.directory.ics.fields,name:0 +msgid "dtstamp" +msgstr "dtstamp" diff --git a/addons/document_webdav/i18n/sr.po b/addons/document_webdav/i18n/sr.po new file mode 100644 index 0000000000000000000000000000000000000000..492769892a302155e87ce7cb4cd57e7f3b6aee87 --- /dev/null +++ b/addons/document_webdav/i18n/sr.po @@ -0,0 +1,31 @@ +# Serbian 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 <EMAIL@ADDRESS>, 2010. +# +msgid "" +msgstr "" +"Project-Id-Version: openobject-addons\n" +"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n" +"POT-Creation-Date: 2009-05-30 15:14+0000\n" +"PO-Revision-Date: 2010-10-16 08:02+0000\n" +"Last-Translator: zmmaj <Unknown>\n" +"Language-Team: Serbian <sr@li.org>\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2010-10-17 04:53+0000\n" +"X-Generator: Launchpad (build Unknown)\n" + +#. module: document_webdav_old +#: model:ir.module.module,description:document_webdav_old.module_meta_information +msgid "" +"This is a complete document management system:\n" +"\t* WebDav Interface\n" +"\t* User Authentification\n" +"\t* Document Indexation\n" +msgstr "" +"Ovo je kompletan sistem Dokument Menadzmenta\n" +"\t* WebDav Interfejs\n" +"\t* Autentifikacija korisnika\n" +"\t* Indeksacija Dokumenata\n" diff --git a/addons/email_template/__openerp__.py b/addons/email_template/__openerp__.py index 6aa4899feb6de6de966b147bd33e3e5e70c706e6..d5f5e9776d30cf16b7ec53534d7d5d1ff7e6a4cc 100644 --- a/addons/email_template/__openerp__.py +++ b/addons/email_template/__openerp__.py @@ -23,10 +23,10 @@ { "name" : "Email Template for OpenERP", "version" : "0.7 RC", - "author" : "Sharoon Thomas, Openlabs", + "author" : "Openlabs", "website" : "http://openerp.com", "category" : "Added functionality", - "depends" : ['base'], + "depends" : ['marketing'], "description": """ Email Template is extraction of Power Email basically just to send the emails. """, diff --git a/addons/email_template/email_template_account_view.xml b/addons/email_template/email_template_account_view.xml index 0c30d7d478fee6bb719101b1790ca38ba4c2e99a..97108cb9e33c362a9947b9e2cebf6f6250670b88 100644 --- a/addons/email_template/email_template_account_view.xml +++ b/addons/email_template/email_template_account_view.xml @@ -2,7 +2,8 @@ <openerp> <data> - <menuitem name="Marketing" icon="terp-crm" id="base.marketing_menu" sequence="17" groups="base.group_system,base.res_groups_email_template_admin"/> + <menuitem name="Marketing" icon="terp-crm" id="base.marketing_menu" sequence="17" + groups="marketing.group_marketing_user"/> <menuitem name="Emails" id="base.menu_emails" parent="base.marketing_menu" sequence="5"/> <menuitem name="Email Template" id="menu_email_template" parent="base.menu_emails"/> diff --git a/addons/email_template/i18n/sr.po b/addons/email_template/i18n/sr.po index dc07a3a7172df9c1b27a03224589a9a11b397726..9d2d73ceafa581d6e09ea9259f29a8f160c52ef5 100644 --- a/addons/email_template/i18n/sr.po +++ b/addons/email_template/i18n/sr.po @@ -8,13 +8,13 @@ msgstr "" "Project-Id-Version: openobject-addons\n" "Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n" "POT-Creation-Date: 2010-08-20 05:34+0000\n" -"PO-Revision-Date: 2010-10-15 14:52+0000\n" -"Last-Translator: zmmaj <Unknown>\n" +"PO-Revision-Date: 2010-10-16 09:14+0000\n" +"Last-Translator: OpenERP Administrators <Unknown>\n" "Language-Team: Serbian <sr@li.org>\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2010-10-16 04:48+0000\n" +"X-Launchpad-Export-Date: 2010-10-17 04:53+0000\n" "X-Generator: Launchpad (build Unknown)\n" #. module: email_template diff --git a/addons/email_template/security/email_template_security.xml b/addons/email_template/security/email_template_security.xml index 7e6c1f4b560e2a0e0fad76092a423dbdf67e8ace..e3f3401217c374546bfa27f791494a3127f85c10 100755 --- a/addons/email_template/security/email_template_security.xml +++ b/addons/email_template/security/email_template_security.xml @@ -2,9 +2,5 @@ <openerp> <data noupdate="0"> - <record id="base.res_groups_email_template_admin" model="res.groups"> - <field name="name">Marketing / User</field> - </record> - </data> </openerp> diff --git a/addons/email_template/security/ir.model.access.csv b/addons/email_template/security/ir.model.access.csv index fd5cf2d0f098c27b24c0cca621253922c6eb63b8..79135b0de4d782f72c87a6a42a1e637be85acaf3 100644 --- a/addons/email_template/security/ir.model.access.csv +++ b/addons/email_template/security/ir.model.access.csv @@ -1,7 +1,7 @@ "id","name","model_id:id","group_id:id","perm_read","perm_write","perm_create","perm_unlink" -"access_email_template_account","email_template.account","model_email_template_account","base.res_groups_email_template_admin",1,0,0,0 -"access_email_template","email.template","model_email_template","base.res_groups_email_template_admin",1,0,0,0 -"access_email_template_mailbox","email_template.mailbox","model_email_template_mailbox","base.res_groups_email_template_admin",1,1,1,1 +"access_email_template_account","email_template.account","model_email_template_account","marketing.group_marketing_user",1,0,0,0 +"access_email_template","email.template","model_email_template","marketing.group_marketing_user",1,0,0,0 +"access_email_template_mailbox","email_template.mailbox","model_email_template_mailbox","marketing.group_marketing_user",1,1,1,1 "access_email_template_account_system","email_template.account system","model_email_template_account","base.group_system",1,1,1,1 "access_email_template_system","email.template system","model_email_template","base.group_system",1,1,1,1 "access_email_template_mailbox_system","email_template.mailbox system","model_email_template_mailbox","base.group_system",1,0,0,0 diff --git a/addons/event/__openerp__.py b/addons/event/__openerp__.py index 4e65009f422cc1154e124c5635bc7d547835305b..9f479a2d9412bde586d07d1d9f655a3832484dc2 100644 --- a/addons/event/__openerp__.py +++ b/addons/event/__openerp__.py @@ -39,7 +39,7 @@ Events / Reporting """, 'author': 'OpenERP SA', - 'depends': ['crm', 'base_contact', 'account'], + 'depends': ['crm', 'base_contact', 'account', 'marketing'], 'init_xml': [], 'update_xml': [ 'security/event_security.xml', diff --git a/addons/event/board_association_view.xml b/addons/event/board_association_view.xml index 3acebb9d767d4d9131b726210554823186a82c0f..d62e4336202a9eeca2ada77389b330d4d0868450 100644 --- a/addons/event/board_association_view.xml +++ b/addons/event/board_association_view.xml @@ -80,7 +80,6 @@ sequence="1" id="menu_board_associations_manager" icon="terp-graph"/> - <menuitem name="Marketing" icon="terp-crm" id="base.marketing_menu" sequence="17" action="open_board_associations_manager"/> </data> </openerp> diff --git a/addons/event/event_view.xml b/addons/event/event_view.xml index 2fe04b165aa87f8fa61dff027195ed6294699c3b..918147b79cb08388c0cbfde610500f6dd47ff140 100644 --- a/addons/event/event_view.xml +++ b/addons/event/event_view.xml @@ -272,6 +272,7 @@ <field name="view_mode">tree,form,calendar,graph</field> <field name="context">{"search_default_draft": "1", "search_default_section_id": section_id}</field> <field name="search_view_id" ref="view_event_search"/> + <field name="help">Event is the low-level object used by meeting and others documents that have to be synchronized with mobile or calendar applications through caldav. Most of the users should work on the Calendar menu, and not on the list of events.</field> </record> <act_window diff --git a/addons/event/i18n/sr.po b/addons/event/i18n/sr.po new file mode 100644 index 0000000000000000000000000000000000000000..12e194dc2a8d63b32687172efea0bbfe0060fcdb --- /dev/null +++ b/addons/event/i18n/sr.po @@ -0,0 +1,646 @@ +# Serbian 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 <EMAIL@ADDRESS>, 2010. +# +msgid "" +msgstr "" +"Project-Id-Version: openobject-addons\n" +"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n" +"POT-Creation-Date: 2009-08-28 16:01+0000\n" +"PO-Revision-Date: 2010-10-16 19:57+0000\n" +"Last-Translator: zmmaj <Unknown>\n" +"Language-Team: Serbian <sr@li.org>\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2010-10-17 04:53+0000\n" +"X-Generator: Launchpad (build Unknown)\n" + +#. module: event +#: field:event.event,date_end:0 +#: field:report.event.registration,date_end:0 +msgid "Ending date" +msgstr "Datum zavrsetka" + +#. module: event +#: field:event.event,register_min:0 +msgid "Minimum Registrations" +msgstr "Registracioni Minimum" + +#. module: event +#: constraint:ir.actions.act_window:0 +msgid "Invalid model name in the action definition." +msgstr "PogreÅ¡no ime modela u definiciji akcije." + +#. module: event +#: field:event.event,mail_registr:0 +msgid "Registration Email" +msgstr "" + +#. module: event +#: model:crm.case.section,name:event.event_0_crm_case_section +msgid "Concert of Bon Jovi" +msgstr "Bon Jovi Koncert" + +#. module: event +#: field:event.event,mail_confirm:0 +msgid "Confirmation Email" +msgstr "Konfirmacioni Email" + +#. module: event +#: constraint:crm.case.section:0 +msgid "Error ! You cannot create recursive sections." +msgstr "GreÅ¡ka ! Ne možete stvarati rekurzivne sekcije." + +#. module: event +#: model:ir.model,name:event.model_event_registration +msgid "Event Registration" +msgstr "Registracioni Dogadjaj" + +#. module: event +#: model:ir.actions.wizard,name:event.event_reg_invoice +msgid "Make Invoice" +msgstr "Kreiraj raÄun" + +#. module: event +#: field:report.event.type.registration,draft_state:0 +msgid "Draft Registrations" +msgstr "Registracije u Pripremi" + +#. module: event +#: view:report.event.registration:0 +msgid "Event on Registration" +msgstr "Sogadjaj pri registraciji" + +#. module: event +#: wizard_button:event.reg_make_invoice,init,end:0 +msgid "Ok" +msgstr "U redu" + +#. module: event +#: field:event.event,mail_auto_confirm:0 +msgid "Mail Auto Confirm" +msgstr "Auto potvrdjivanje Email-a" + +#. module: event +#: model:product.template,name:event.event_product_1_product_template +msgid "Ticket for Opera" +msgstr "Karta za Operu" + +#. module: event +#: wizard_field:event.reg_make_invoice,init,inv_rejected:0 +msgid "Invoice Rejected" +msgstr "Racun Odbijen" + +#. module: event +#: view:event.event:0 +msgid "Confirm Event" +msgstr "Potvrdi Dogadjaj" + +#. module: event +#: model:crm.case.section,name:event.event_1_crm_case_section +msgid "Opera of Verdi" +msgstr "Verdijeva Opera" + +#. module: event +#: field:report.event.registration,draft_state:0 +msgid "Draft Registration" +msgstr "Registracija u pripremi" + +#. module: event +#: wizard_view:event.reg_make_invoice,init:0 +msgid "Create Invoices" +msgstr "Kreiraj Racune" + +#. module: event +#: model:ir.module.module,description:event.module_meta_information +msgid "" +"Organization and management of events.\n" +"\n" +" This module allow you\n" +" * to manage your events and their registrations\n" +" * to use emails to automatically confirm and send acknowledgements " +"for any registration to an event\n" +" * ...\n" +"\n" +" Note that:\n" +" - You can define new types of events in\n" +" Events / Configuration / Types of Events\n" +" - You can access predefined reports about number of registration per " +"event or per event category in :\n" +" Events / Reporting\n" +msgstr "" +"Organizacija i Upravljanje Dogadjajima\n" +"\n" +" Ovaj vam modul omogucuje\n" +" *da upravljate dogadjajima i njihovim registracijama\n" +" *da koristite Emailove za automatsku potvrdu i slanje upozorenja za " +"bilo koju registraciju nekog dogadjaja\n" +" *\n" +" Upamtite da:\n" +" -Mozete da definisete nove tipove dogadjaja u\n" +" " +"Dogadjaji/Podesavanja/Tipovi Dogadjaja\n" +" -Mozete da pristupite predefinisanim izvestajima o broju registracija po " +"dogadjaju ili cak po kategorijama u:\n" +" " +"Dogadjaji/Izvestavanje\n" + +#. module: event +#: view:event.registration:0 +msgid "Extra Info" +msgstr "Dodatne Informacije" + +#. module: event +#: view:event.registration:0 +msgid "Registration" +msgstr "Registracija" + +#. module: event +#: field:event.type,name:0 +#: model:ir.model,name:event.model_event_type +msgid "Event type" +msgstr "Tip dogadjaja" + +#. module: event +#: view:event.event:0 +#: model:ir.model,name:event.model_event_event +#: model:ir.module.module,shortdesc:event.module_meta_information +#: field:report.event.registration,name:0 +msgid "Event" +msgstr "DogaÄ‘aj" + +#. module: event +#: selection:event.event,state:0 +msgid "Confirmed" +msgstr "PotvrÄ‘eno" + +#. module: event +#: wizard_view:event.confirm_registration,split:0 +msgid "Registration Confirmation" +msgstr "Potvrda Registracije" + +#. module: event +#: view:event.registration:0 +msgid "Dates" +msgstr "Datumi" + +#. module: event +#: field:event.event,register_current:0 +#: model:ir.actions.act_window,name:event.action_registration_confirm +#: model:ir.ui.menu,name:event.menu_action_registration_confirm +msgid "Confirmed Registrations" +msgstr "Potvrdjene Registracije" + +#. module: event +#: field:event.event,mail_auto_registr:0 +msgid "Mail Auto Register" +msgstr "Auto Registracija Mailom" + +#. module: event +#: view:event.registration:0 +msgid "Badge" +msgstr "Znacka" + +#. module: event +#: field:event.event,section_id:0 +msgid "Case section" +msgstr "Tip Sekcije" + +#. module: event +#: field:event.registration,tobe_invoiced:0 +msgid "To be Invoiced" +msgstr "Da bude Fakturisano" + +#. module: event +#: model:ir.ui.menu,name:event.menu_event_event +msgid "All Events" +msgstr "Svi Dogadjaji" + +#. module: event +#: model:ir.ui.menu,name:event.menu_report_event +msgid "Reporting" +msgstr "IzveÅ¡tavanje" + +#. module: event +#: view:event.registration:0 +msgid "Cancel Registration" +msgstr "Otkazi Registraciju" + +#. module: event +#: model:ir.ui.menu,name:event.menu_action_event_categories +msgid "Events by Categories" +msgstr "Dogadjaji po Kategorijama" + +#. module: event +#: wizard_view:event.confirm_registration,split:0 +msgid "The event limit is reached. What do you want to do?" +msgstr "Limit Dogadjaja je postignut. Sta zelis da uradis?" + +#. module: event +#: field:report.event.type.registration,confirm_state:0 +msgid "Confirm Registrations" +msgstr "potvrdi Registraciju" + +#. module: event +#: view:event.registration:0 +msgid "References" +msgstr "Reference" + +#. module: event +#: model:ir.actions.act_window,name:event.action_event_type_registration +#: model:ir.ui.menu,name:event.menu_report_event_type_registration +#: view:report.event.type.registration:0 +msgid "Registration By Event Types" +msgstr "Registracije po Tipu Dogadjaja" + +#. module: event +#: model:ir.ui.menu,name:event.menu_event_config +msgid "Configuration" +msgstr "PodeÅ¡avanje" + +#. module: event +#: constraint:ir.ui.view:0 +msgid "Invalid XML for View Architecture!" +msgstr "Nevažeći XML za pregled arhitekture" + +#. module: event +#: wizard_button:event.confirm_registration,split,confirm:0 +msgid "Confirm Anyway" +msgstr "Sve jedno Potvrdi" + +#. module: event +#: constraint:product.template:0 +msgid "Error: UOS must be in a different category than the UOM" +msgstr "" +"GreÅ¡ka: JU (jedinice usluga) i JM moraju da budu u razliÄitim kategorijama" + +#. module: event +#: view:event.event:0 +msgid "Parent Category" +msgstr "Roditeljska Kategorija" + +#. module: event +#: view:event.registration:0 +msgid "Registration Invoiced" +msgstr "Registracija fakturisana" + +#. module: event +#: field:report.event.type.registration,nbevent:0 +msgid "Number Of Events" +msgstr "Broj Dogadjaja" + +#. module: event +#: view:event.event:0 +msgid "Cancel Event" +msgstr "Otkazi Dogadjaj" + +#. module: event +#: wizard_field:event.reg_make_invoice,init,inv_rej_reason:0 +msgid "Error Messages" +msgstr "Poruke o greskama" + +#. module: event +#: view:event.event:0 +msgid "Mailing" +msgstr "E-Postanska" + +#. module: event +#: model:product.template,name:event.event_product_0_product_template +msgid "Ticket for Concert" +msgstr "Karta za koncert" + +#. module: event +#: field:event.event,register_prospect:0 +#: model:ir.actions.act_window,name:event.action_registration_draft +#: model:ir.ui.menu,name:event.menu_action_registration_draft +msgid "Unconfirmed Registrations" +msgstr "Nepotvrdjene Registracije" + +#. module: event +#: field:event.registration,partner_invoice_id:0 +msgid "Partner Invoiced" +msgstr "Partner Fakturisan" + +#. module: event +#: view:event.registration:0 +msgid "Communication history" +msgstr "Istorija Komunikacija" + +#. module: event +#: selection:event.event,state:0 +msgid "Canceled" +msgstr "Отказано" + +#. module: event +#: view:event.event:0 +msgid "Event Done" +msgstr "Dogadjaj Zavrsen" + +#. module: event +#: field:event.registration,badge_name:0 +msgid "Badge Name" +msgstr "Naziv Znacke" + +#. module: event +#: model:ir.actions.act_window,name:event.action_event_registration +#: model:ir.ui.menu,name:event.menu_report_event_registration +msgid "Events On Registrations" +msgstr "Dogadjaji pri Registraciji" + +#. module: event +#: constraint:product.template:0 +msgid "" +"Error: The default UOM and the purchase UOM must be in the same category." +msgstr "" +"GreÅ¡ka: Podrazumevana JM i kupljena JM moraju da budu u istoj kategoriji." + +#. module: event +#: wizard_field:event.reg_make_invoice,init,inv_created:0 +msgid "Invoice Created" +msgstr "Racun Kreiran" + +#. module: event +#: view:event.event:0 +msgid "Statistics" +msgstr "Statistike" + +#. module: event +#: selection:event.event,state:0 +msgid "Draft" +msgstr "Priprema" + +#. module: event +#: view:event.event:0 +msgid "Event description" +msgstr "Opis Dogadjaja" + +#. module: event +#: model:ir.model,name:event.model_report_event_type_registration +msgid "Event type on registration" +msgstr "Tip Dogadjaja pri registraciji" + +#. module: event +#: constraint:ir.model:0 +msgid "" +"The Object name must start with x_ and not contain any special character !" +msgstr "" +"Ime objekta mora da poÄinje sa x_ i ne sme da sadrži specijalne karaktere !" + +#. module: event +#: field:event.registration,event_id:0 +msgid "Event Related" +msgstr "Vezani Dogadjaj" + +#. module: event +#: model:crm.case.section,name:event.case_section_event +#: view:event.event:0 +#: model:ir.actions.act_window,name:event.action_event_view +msgid "Events" +msgstr "DogaÄ‘aji" + +#. module: event +#: field:event.registration,nb_register:0 +msgid "Number of Registration" +msgstr "Broj Registracija" + +#. module: event +#: view:event.event:0 +#: field:event.event,state:0 +#: view:event.registration:0 +msgid "Status" +msgstr "Status" + +#. module: event +#: model:ir.actions.act_window,name:event.action_event_categories +msgid "Events by section" +msgstr "Dogadjaji po Sekciji" + +#. module: event +#: model:ir.ui.menu,name:event.menu_action_registration +msgid "All Registrations" +msgstr "Sve Registracije" + +#. module: event +#: help:event.event,mail_auto_registr:0 +msgid "" +"Check this box if you want to use the automatic mailing for new registration" +msgstr "" +"Cekiraj ovu Kucicu ako zelite da koristite automatski mailing pri novoj " +"registraciji" + +#. module: event +#: view:event.event:0 +msgid "Set To Draft" +msgstr "" + +#. module: event +#: view:event.registration:0 +#: model:ir.actions.wizard,name:event.event_confirm_registration +#: field:report.event.registration,confirm_state:0 +msgid "Confirm Registration" +msgstr "Posalji na Pripremu" + +#. module: event +#: view:event.registration:0 +msgid "History" +msgstr "Istorija" + +#. module: event +#: model:ir.ui.menu,name:event.menu_event_type +msgid "Types of Events" +msgstr "Tipovi Dogadjaja" + +#. module: event +#: field:event.registration,contact_id:0 +msgid "Partner Contact" +msgstr "Kontakt partnera" + +#. module: event +#: view:event.event:0 +msgid "Auto Confirmation Email" +msgstr "Auto-Mail za potvrdu" + +#. module: event +#: view:event.event:0 +#: view:event.registration:0 +msgid "General" +msgstr "OpÅ¡te" + +#. module: event +#: view:event.registration:0 +msgid "Send Reminder" +msgstr "Posalji Podsetnik" + +#. module: event +#: selection:event.event,state:0 +msgid "Done" +msgstr "Gotovo" + +#. module: event +#: field:event.event,date_begin:0 +#: field:report.event.registration,date_begin:0 +msgid "Beginning date" +msgstr "Datum pocetka" + +#. module: event +#: field:event.registration,invoice_id:0 +msgid "Invoice" +msgstr "RaÄun" + +#. module: event +#: model:ir.model,name:event.model_report_event_registration +msgid "Events on registrations" +msgstr "Dogadjaji pri Registraciji" + +#. module: event +#: wizard_button:event.confirm_registration,split,end:0 +msgid "Cancel" +msgstr "Otkaži" + +#. module: event +#: wizard_button:event.reg_make_invoice,init,open:0 +msgid "Open" +msgstr "Otvori" + +#. module: event +#: field:event.registration,badge_title:0 +msgid "Badge Title" +msgstr "Naslov Znacke" + +#. module: event +#: model:ir.actions.act_window,name:event.action_new_event_form +#: model:ir.ui.menu,name:event.menu_event_new_event +msgid "New event" +msgstr "Novi Dogadjaj" + +#. module: event +#: field:event.registration,unit_price:0 +msgid "Unit Price" +msgstr "JediniÄna cijena" + +#. module: event +#: model:crm.case.section,name:event.event_2_crm_case_section +msgid "Conference on ERP Buisness" +msgstr "Konferencija o ERP Biznisu" + +#. module: event +#: field:event.registration,badge_partner:0 +msgid "Badge Partner" +msgstr "Partner Znacke" + +#. module: event +#: model:ir.actions.act_window,name:event.action_event_view_confirm +#: model:ir.ui.menu,name:event.menu_event_event_confirm +msgid "Confirmed Events" +msgstr "Potvrdi Dogadjaje" + +#. module: event +#: field:event.event,register_max:0 +#: field:report.event.registration,register_max:0 +msgid "Maximum Registrations" +msgstr "Maksimum Registracija" + +#. module: event +#: field:event.event,type:0 +msgid "Type" +msgstr "Tip" + +#. module: event +#: help:event.event,mail_registr:0 +msgid "This email will be sent when someone subscribes to the event." +msgstr "Ovaj ce Email biti poslan kada se neko bude prijavio za dogadjaj" + +#. module: event +#: model:product.template,name:event.event_product_2_product_template +msgid "Ticket for Conference" +msgstr "Karta za konferenciju" + +#. module: event +#: field:event.registration,case_id:0 +msgid "Case" +msgstr "Slucaj" + +#. module: event +#: view:event.event:0 +msgid "Name" +msgstr "Ime" + +#. module: event +#: help:event.event,mail_auto_confirm:0 +msgid "" +"Check this box if you want ot use the automatic confirmation emailing or the " +"reminder" +msgstr "" +"Cekiraj ovu kucicu ako zelis da koristis automatsko slanje E-podsetnika" + +#. module: event +#: help:event.event,mail_confirm:0 +msgid "" +"This email will be sent when the event gets confimed or when someone " +"subscribes to a confirmed event. This is also the email sent to remind " +"someone about the event." +msgstr "" +"Ovaj ce Email biti poslan kada se dogadjaj potvrdi ili kada se neko upise na " +"potvrdjeni dogadjaj. Ovo je takodje Email koji ce biti poslat da podseti " +"nekog o dogadjaju." + +#. module: event +#: field:event.event,product_id:0 +msgid "Product" +msgstr "Proizvod" + +#. module: event +#: field:event.registration,invoice_label:0 +msgid "Label Invoice" +msgstr "" + +#. module: event +#: view:event.registration:0 +msgid "Payments" +msgstr "Isplate" + +#. module: event +#: view:event.type:0 +#: field:report.event.type.registration,name:0 +msgid "Event Type" +msgstr "Vrsta dogaÄ‘aja" + +#. module: event +#: view:event.event:0 +#: model:ir.actions.act_window,name:event.action_registration +#: model:ir.actions.wizard,name:event.wizard_event_registration +msgid "Registrations" +msgstr "Registracije" + +#. module: event +#: model:ir.actions.act_window,name:event.action_event_view_draft +#: model:ir.ui.menu,name:event.menu_event_event_draft +msgid "Draft Events" +msgstr "Dodgadjaji iz Pripreme" + +#. module: event +#: model:ir.ui.menu,name:event.menu_event_main +msgid "Events Organisation" +msgstr "Organizacija Dogadjaja" + +#. module: event +#: view:event.registration:0 +msgid "Actions" +msgstr "Akcije" + +#. module: event +#: model:ir.actions.wizard,name:event.wizard_event_reg_partners +msgid "List Register Partners" +msgstr "Spisak Registrovanih Partnera" + +#. module: event +#: constraint:product.product:0 +msgid "Error: Invalid ean code" +msgstr "GreÅ¡ka: Neispravan EAN kod" + +#. module: event +#: view:event.event:0 +msgid "Auto Registration Email" +msgstr "Auto Registracioni Email" diff --git a/addons/event/report/report_event_registration_view.xml b/addons/event/report/report_event_registration_view.xml index 83d52d5ab121953aaee0af276de837963156fefc..d8cc84a054783a2a09022c584689797c142830c4 100644 --- a/addons/event/report/report_event_registration_view.xml +++ b/addons/event/report/report_event_registration_view.xml @@ -141,7 +141,7 @@ <field name="act_window_id" ref="action_report_event_registration"/> </record> - <menuitem parent="base.menu_report_association" action="action_report_event_registration" id="menu_report_event_registration" sequence="3" groups="base.group_system,base.group_marketing_manager"/> + <menuitem parent="base.menu_report_association" action="action_report_event_registration" id="menu_report_event_registration" sequence="3" groups="base.group_marketing_manager"/> </data> </openerp> diff --git a/addons/event/security/event_security.xml b/addons/event/security/event_security.xml index bcd172ce8c787627f7c334de86d2918b439c527f..4415b11a8e44e2c9c28cea6a7199d9d79883ce4b 100644 --- a/addons/event/security/event_security.xml +++ b/addons/event/security/event_security.xml @@ -6,7 +6,7 @@ <field name="name">Marketing / Manager</field> </record> - <record id="base.res_groups_email_template_admin" model="res.groups"> + <record id="marketing.group_marketing_user" model="res.groups"> <field name="name">Marketing / User</field> </record> diff --git a/addons/event/security/ir.model.access.csv b/addons/event/security/ir.model.access.csv index c93c2baa65e1cb7e04103985cc632e3544c9225c..9ee5ae7ec8041ea176c3a7b9c708fb272fa8a770 100644 --- a/addons/event/security/ir.model.access.csv +++ b/addons/event/security/ir.model.access.csv @@ -1,9 +1,9 @@ "id","name","model_id:id","group_id:id","perm_read","perm_write","perm_create","perm_unlink" -"access_event_type","event.type","model_event_type","base.res_groups_email_template_admin",1,0,0,0 +"access_event_type","event.type","model_event_type","marketing.group_marketing_user",1,0,0,0 "access_event_type_manager","event.type manager","model_event_type","base.group_marketing_manager",1,1,1,1 -"access_event_event","event.event","model_event_event","base.res_groups_email_template_admin",1,1,1,0 -"access_event_registration","event.registration","model_event_registration","base.res_groups_email_template_admin",1,1,1,0 -"access_report_event_registration","report.event.registration","model_report_event_registration","base.res_groups_email_template_admin",1,1,1,1 +"access_event_event","event.event","model_event_event","marketing.group_marketing_user",1,1,1,0 +"access_event_registration","event.registration","model_event_registration","marketing.group_marketing_user",1,1,1,0 +"access_report_event_registration","report.event.registration","model_report_event_registration","marketing.group_marketing_user",1,1,1,1 "access_event_event_manager","event.event manager","model_event_event","base.group_marketing_manager",1,0,0,0 "access_event_registration_manager","event.registration manager","model_event_registration","base.group_marketing_manager",1,0,0,0 "access_crm_case_section_manager","crm.case.section manager","crm.model_crm_case_section","base.group_marketing_manager",1,1,1,1 @@ -11,10 +11,5 @@ "access_report_event_registration","report.event.registration","model_report_event_registration","base.group_marketing_manager",1,1,1,1 "access_event_registration_badge_manager","event.registration.badge manager","model_event_registration_badge","base.group_marketing_manager",1,1,1,1 "access_event_event_sale_salesman","event.event.sale","model_event_event","base.group_sale_salesman",1,0,0,0 -"access_event_event_system","event.event system","model_event_event","base.group_system",1,0,0,0 -"access_event_registration_system","event.registration system","model_event_registration","base.group_system",1,0,0,0 -"access_report_event_registration_system","report.event.registration system","model_report_event_registration","base.group_system",1,1,1,1 -"access_account_account_invoice_system","account.account.invoice","account.model_account_invoice","base.group_system",1,0,0,0 -"access_event_type_sytem","event.type system","model_event_type","base.group_system",1,1,1,1 "access_account_account_invoice_manager","account.account.invoice","account.model_account_invoice","base.group_marketing_manager",1,0,0,0 -"access_event_registration_badge","event.registration.badge","model_event_registration_badge","base.res_groups_email_template_admin",1,0,0,0 +"access_event_registration_badge","event.registration.badge","model_event_registration_badge","marketing.group_marketing_user",1,0,0,0 diff --git a/addons/event_project/i18n/it.po b/addons/event_project/i18n/it.po index 9d5270feb865d0380a78c90ef3b72018f9676d5b..1b89667805fef9e5c9de3aaeaae47329ceb42722 100644 --- a/addons/event_project/i18n/it.po +++ b/addons/event_project/i18n/it.po @@ -7,13 +7,13 @@ msgstr "" "Project-Id-Version: OpenERP Server 5.0.4\n" "Report-Msgid-Bugs-To: support@openerp.com\n" "POT-Creation-Date: 2009-08-28 16:01+0000\n" -"PO-Revision-Date: 2010-09-29 10:49+0000\n" -"Last-Translator: OpenERP Administrators <Unknown>\n" +"PO-Revision-Date: 2010-10-16 08:28+0000\n" +"Last-Translator: simone.sandri <Unknown>\n" "Language-Team: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2010-09-30 04:43+0000\n" +"X-Launchpad-Export-Date: 2010-10-17 04:53+0000\n" "X-Generator: Launchpad (build Unknown)\n" #. module: event_project @@ -48,7 +48,7 @@ msgstr "Attività Rimanenti" #. module: event_project #: model:ir.module.module,shortdesc:event_project.module_meta_information msgid "Event - Project" -msgstr "" +msgstr "Evento - Progetto" #. module: event_project #: field:event.event,project_id:0 diff --git a/addons/event_project/i18n/sr.po b/addons/event_project/i18n/sr.po new file mode 100644 index 0000000000000000000000000000000000000000..70465d3c26662218ccac04ad759d6c039ab23d40 --- /dev/null +++ b/addons/event_project/i18n/sr.po @@ -0,0 +1,88 @@ +# Serbian 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 <EMAIL@ADDRESS>, 2010. +# +msgid "" +msgstr "" +"Project-Id-Version: openobject-addons\n" +"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n" +"POT-Creation-Date: 2009-08-28 16:01+0000\n" +"PO-Revision-Date: 2010-10-16 20:04+0000\n" +"Last-Translator: zmmaj <Unknown>\n" +"Language-Team: Serbian <sr@li.org>\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2010-10-17 04:53+0000\n" +"X-Generator: Launchpad (build Unknown)\n" + +#. module: event_project +#: constraint:ir.ui.view:0 +msgid "Invalid XML for View Architecture!" +msgstr "Nevažeći XML za pregled arhitekture" + +#. module: event_project +#: model:ir.actions.wizard,name:event_project.wizard_event_task +msgid "Tasks" +msgstr "Zadaci" + +#. module: event_project +#: wizard_button:event.project,init,done:0 +msgid "Ok" +msgstr "U redu" + +#. module: event_project +#: model:ir.module.module,description:event_project.module_meta_information +msgid "" +"Organization and management of events.\n" +"\n" +" This module allow you to create retro planning for managing your " +"events.\n" +msgstr "" +"Organizacija i Upravljanje Dogadjajima.\n" +"\n" +" Ovaj modul vam omogucava da kreirate retro planiranje za upravljanje " +"vasim dogadjajima.\n" + +#. module: event_project +#: view:event.event:0 +msgid "Remaining Tasks" +msgstr "Preostali Zadaci" + +#. module: event_project +#: model:ir.module.module,shortdesc:event_project.module_meta_information +msgid "Event - Project" +msgstr "Projekat-Dogadjaj" + +#. module: event_project +#: field:event.event,project_id:0 +#: wizard_field:event.project,init,project_id:0 +#: model:ir.actions.wizard,name:event_project.event_wiz +msgid "Project" +msgstr "Projekat" + +#. module: event_project +#: field:event.event,task_ids:0 +msgid "Project tasks" +msgstr "Projekat Zadataka" + +#. module: event_project +#: wizard_button:event.project,init,end:0 +msgid "Cancel" +msgstr "Otkaži" + +#. module: event_project +#: view:event.event:0 +msgid "Create Retro-Planning" +msgstr "Kreiraj Retro-Planiranje" + +#. module: event_project +#: wizard_view:event.project,init:0 +msgid "Event" +msgstr "DogaÄ‘aj" + +#. module: event_project +#: view:event.event:0 +msgid "Tasks management" +msgstr "Upravljanje Zadacima" diff --git a/addons/fetchmail/__openerp__.py b/addons/fetchmail/__openerp__.py index 94dbdf4ef5c5b2520585548f397ab26ebe7ab4dd..e9050fda07565c3a725f943c389241b5f5554a4b 100644 --- a/addons/fetchmail/__openerp__.py +++ b/addons/fetchmail/__openerp__.py @@ -33,7 +33,6 @@ * Automatic Email Receive * Email based Records (Add, Update) """, - 'author': 'Tiny', 'website': 'http://www.openerp.com', 'init_xml': [], 'update_xml': [ diff --git a/addons/fetchmail/fetchmail.py b/addons/fetchmail/fetchmail.py index 7d527442391144bc6b825a7e09283362f4f514b2..2147d7747623bc219cb913aac27553b6d503c515 100644 --- a/addons/fetchmail/fetchmail.py +++ b/addons/fetchmail/fetchmail.py @@ -71,8 +71,9 @@ class email_server(osv.osv): } def check_duplicate(self, cr, uid, ids): + # RFC *-* Why this limitation? why not in SQL constraint? vals = self.read(cr, uid, ids, ['user', 'password'])[0] - cr.execute("select count(id) from email_server where user='%s' and password='%s'" % (vals['user'], vals['password'])) + cr.execute("select count(id) from email_server where user='%s' and password='%s'", (vals['user'], vals['password'])) res = cr.fetchone() if res: if res[0] > 1: diff --git a/addons/fetchmail/i18n/sr.po b/addons/fetchmail/i18n/sr.po new file mode 100644 index 0000000000000000000000000000000000000000..115ed3155f9da76312165b7e1c4546590131cb57 --- /dev/null +++ b/addons/fetchmail/i18n/sr.po @@ -0,0 +1,274 @@ +# Serbian 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 <EMAIL@ADDRESS>, 2010. +# +msgid "" +msgstr "" +"Project-Id-Version: openobject-addons\n" +"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n" +"POT-Creation-Date: 2010-08-20 13:33+0000\n" +"PO-Revision-Date: 2010-10-16 20:18+0000\n" +"Last-Translator: zmmaj <Unknown>\n" +"Language-Team: Serbian <sr@li.org>\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2010-10-17 04:53+0000\n" +"X-Generator: Launchpad (build Unknown)\n" + +#. module: fetchmail +#: selection:email.server,state:0 +msgid "Confirmed" +msgstr "PotvrÄ‘eno" + +#. module: fetchmail +#: constraint:ir.model:0 +msgid "" +"The Object name must start with x_ and not contain any special character !" +msgstr "" +"Ime objekta mora da poÄinje sa x_ i ne sme da sadrži specijalne karaktere !" + +#. module: fetchmail +#: constraint:ir.actions.act_window:0 +msgid "Invalid model name in the action definition." +msgstr "PogreÅ¡no ime modela u definiciji akcije." + +#. module: fetchmail +#: model:ir.actions.act_window,name:fetchmail.action_email_server_tree_imap +#: model:ir.ui.menu,name:fetchmail.menu_action_email_server_tree_imap +msgid "IMAP Servers" +msgstr "IMAP Serveri" + +#. module: fetchmail +#: field:email.server,action_id:0 +msgid "Reply Email" +msgstr "Odgovori na Email" + +#. module: fetchmail +#: view:email.server:0 +msgid "Server & Login" +msgstr "Server & Login" + +#. module: fetchmail +#: field:email.server,priority:0 +msgid "Server Priority" +msgstr "Prioritet Servera" + +#. module: fetchmail +#: field:email.server,state:0 +msgid "State" +msgstr "Stanje" + +#. module: fetchmail +#: constraint:ir.ui.menu:0 +msgid "Error ! You can not create recursive Menu." +msgstr "Greska! Ne mozete kreirati rekursivni meni." + +#. module: fetchmail +#: selection:email.server,state:0 +msgid "Not Confirmed" +msgstr "Nije potvrdjeno" + +#. module: fetchmail +#: view:email.server:0 +msgid "POP/IMAP Servers" +msgstr "POP/IMAP Serveri" + +#. module: fetchmail +#: model:ir.module.module,shortdesc:fetchmail.module_meta_information +msgid "Fetchmail Server" +msgstr "Email Server" + +#. module: fetchmail +#: view:email.server:0 +#: field:email.server,note:0 +msgid "Description" +msgstr "Opis" + +#. module: fetchmail +#: field:email.server,attach:0 +msgid "Add Attachments ?" +msgstr "Dodajes Attachmente ( dodatke) ?" + +#. module: fetchmail +#: view:email.server:0 +msgid "Set to Draft" +msgstr "Postavi u pripremu" + +#. module: fetchmail +#: field:email.server,user:0 +msgid "User Name" +msgstr "KorisniÄko ime" + +#. module: fetchmail +#: field:email.server,user_id:0 +msgid "User" +msgstr "Korisnik" + +#. module: fetchmail +#: field:email.server,date:0 +msgid "Date" +msgstr "Datum" + +#. module: fetchmail +#: selection:email.server,state:0 +msgid "Waiting for Verification" +msgstr "Cekanje na Potvrdu" + +#. module: fetchmail +#: field:email.server,password:0 +msgid "Password" +msgstr "Lozinka" + +#. module: fetchmail +#: constraint:ir.cron:0 +msgid "Invalid arguments" +msgstr "Neispravni Argumenti" + +#. module: fetchmail +#: constraint:ir.ui.view:0 +msgid "Invalid XML for View Architecture!" +msgstr "Nevažeći XML za pregled arhitekture" + +#. module: fetchmail +#: view:email.server:0 +msgid "Auto Reply?" +msgstr "Auto Odgovor?" + +#. module: fetchmail +#: field:email.server,name:0 +msgid "Name" +msgstr "Ime" + +#. module: fetchmail +#: model:ir.model,name:fetchmail.model_mailgate_message +msgid "Mailgateway Message" +msgstr "Poruka Email prolaza" + +#. module: fetchmail +#: model:ir.actions.act_window,name:fetchmail.action_email_server_tree +#: model:ir.ui.menu,name:fetchmail.menu_action_email_server_tree +msgid "POP Servers" +msgstr "POP Serveri" + +#. module: fetchmail +#: model:ir.ui.menu,name:fetchmail.menu_action_fetchmail_server_tree +msgid "Fetchmail Services" +msgstr "Email Servisi" + +#. module: fetchmail +#: model:ir.actions.act_window,name:fetchmail.action_mailgate_message_tree +#: model:ir.actions.act_window,name:fetchmail.action_mailgate_message_tree_pop +#: model:ir.ui.menu,name:fetchmail.menu_action_mailgate_message_tree +#: model:ir.ui.menu,name:fetchmail.menu_action_mailgate_message_tree_pop +msgid "Received Email History" +msgstr "Istorija Primljenih E-mailova" + +#. module: fetchmail +#: field:email.server,active:0 +msgid "Active" +msgstr "Aktivan" + +#. module: fetchmail +#: view:email.server:0 +msgid "Process Parameter" +msgstr "Obradi Parametar" + +#. module: fetchmail +#: field:email.server,is_ssl:0 +msgid "SSL ?" +msgstr "SSL ?" + +#. module: fetchmail +#: selection:email.server,type:0 +#: selection:mailgate.message,type:0 +msgid "IMAP Server" +msgstr "MAP Server" + +#. module: fetchmail +#: field:email.server,object_id:0 +msgid "Model" +msgstr "Model" + +#. module: fetchmail +#: field:email.server,server:0 +msgid "Server" +msgstr "Server" + +#. module: fetchmail +#: model:ir.actions.act_window,name:fetchmail.act_server_history +msgid "Email History" +msgstr "Email Istorija" + +#. module: fetchmail +#: view:email.server:0 +#: model:ir.model,name:fetchmail.model_email_server +msgid "POP/IMAP Server" +msgstr "POP/IMAP Server" + +#. module: fetchmail +#: constraint:ir.rule:0 +msgid "Rules are not supported for osv_memory objects !" +msgstr "Pravila nisu podrzana od strane osv_memory objekata !" + +#. module: fetchmail +#: field:email.server,type:0 +#: field:mailgate.message,type:0 +msgid "Server Type" +msgstr "Tup Servera" + +#. module: fetchmail +#: view:email.server:0 +msgid "Login Information" +msgstr "Informacije o Prijavi" + +#. module: fetchmail +#: view:email.server:0 +msgid "Server Information" +msgstr "Podaci o Serveru" + +#. module: fetchmail +#: selection:email.server,type:0 +#: selection:mailgate.message,type:0 +msgid "POP Server" +msgstr "POP Server" + +#. module: fetchmail +#: field:email.server,port:0 +msgid "Port" +msgstr "Port" + +#. module: fetchmail +#: model:ir.module.module,description:fetchmail.module_meta_information +msgid "" +"Fetchmail: \n" +" * Fetch email from Pop / IMAP server\n" +" * Support SSL\n" +" * Integrated with all Modules\n" +" * Automatic Email Receive\n" +" * Email based Records (Add, Update)\n" +" " +msgstr "" +"Fetchmail: \n" +" *Hvata emailove sa pop/imap servera\n" +" *Podrzava SSL\n" +" *Integrise se sa svim modulima\n" +" *Automatski prima Emailove\n" +" *Na bazi Email-a pravi snimanja ( Dodaje, Dopunjava)\n" +" " + +#. module: fetchmail +#: help:email.server,priority:0 +msgid "Priority between 0 to 10, select define the order of Processing" +msgstr "Vaznost izmedju 0 i 10, izaberi i definisi redosled Procesuiranja" + +#. module: fetchmail +#: field:mailgate.message,server_id:0 +msgid "Mail Server" +msgstr "Email Server" + +#. module: fetchmail +#: view:email.server:0 +msgid "Fetch Emails" +msgstr "Hvata Emailove" diff --git a/addons/google_map/i18n/sr.po b/addons/google_map/i18n/sr.po new file mode 100644 index 0000000000000000000000000000000000000000..9cf75fa2c19fdfccf93fc073e55dd1c5fe0cdfc7 --- /dev/null +++ b/addons/google_map/i18n/sr.po @@ -0,0 +1,51 @@ +# Serbian 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 <EMAIL@ADDRESS>, 2010. +# +msgid "" +msgstr "" +"Project-Id-Version: openobject-addons\n" +"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n" +"POT-Creation-Date: 2009-08-28 16:01+0000\n" +"PO-Revision-Date: 2010-10-16 08:00+0000\n" +"Last-Translator: zmmaj <Unknown>\n" +"Language-Team: Serbian <sr@li.org>\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2010-10-17 04:53+0000\n" +"X-Generator: Launchpad (build Unknown)\n" + +#. module: google_map +#: model:ir.actions.wizard,name:google_map.wizard_google_map +msgid "Launch Google Map" +msgstr "Ppkreni Google Map" + +#. module: google_map +#: constraint:ir.ui.view:0 +msgid "Invalid XML for View Architecture!" +msgstr "Nevažeći XML za pregled arhitekture" + +#. module: google_map +#: view:res.partner:0 +#: view:res.partner.address:0 +msgid "Street2 : " +msgstr "Ulica2 " + +#. module: google_map +#: model:ir.module.module,description:google_map.module_meta_information +msgid "" +"The module adds google map field in partner address\n" +"so that we can directly open google map from the\n" +"url widget." +msgstr "" +"Ovaj Modul ubacuje sliku google map u partnerovoj adresi\n" +"tako da mozemo direktno da otvorimo google map iz tog\n" +"prozora." + +#. module: google_map +#: view:res.partner:0 +#: view:res.partner.address:0 +msgid "Map" +msgstr "mapa" diff --git a/addons/hr/board_hr_view.xml b/addons/hr/board_hr_view.xml index 2bcc7738397c7831e15611d03ecd81361d5b66cf..8e1a442e025f8be5979c76f6c6027d923aaf39e0 100644 --- a/addons/hr/board_hr_view.xml +++ b/addons/hr/board_hr_view.xml @@ -28,7 +28,6 @@ <field name="usage">menu</field> <field name="view_id" ref="board_hr_form"/> </record> - <menuitem id="menu_hr_root" icon="terp-hr" name="Human Resources" sequence="15"/> <menuitem id="menu_hr_deshboard" name="Human Resources" diff --git a/addons/hr/hr_view.xml b/addons/hr/hr_view.xml index ce501c6951a35b280fb4fd33f66d81804b070eeb..9e807d43cab94e44867cb04da2705eac1db958fd 100644 --- a/addons/hr/hr_view.xml +++ b/addons/hr/hr_view.xml @@ -2,8 +2,9 @@ <openerp> <data> - <menuitem id="menu_hr_root" icon="terp-hr" name="Human Resources" sequence="15"/> - <menuitem id="menu_hr_main" parent="menu_hr_root" name="Human Resources" sequence="0" groups="base.group_hr_manager,base.group_hr_user"/> + <menuitem id="menu_hr_root" icon="terp-hr" name="Human Resources" sequence="15" + groups="base.group_hr_manager,base.group_hr_user"/> + <menuitem id="menu_hr_main" parent="menu_hr_root" name="Human Resources" sequence="0" groups="base.group_hr_manager"/> <menuitem id="menu_hr_configuration" name="Configuration" parent="hr.menu_hr_root" groups="base.group_hr_manager" sequence="50"/> <menuitem id="menu_hr_management" name="Human Resources" parent="hr.menu_hr_configuration" sequence="1"/> <menuitem id="menu_view_employee_category_configuration_form" parent="hr.menu_hr_management" groups="base.group_hr_manager" name="Employees" sequence="1" /> diff --git a/addons/hr_attendance/report/attendance_by_month.py b/addons/hr_attendance/report/attendance_by_month.py index da761f3bb0c35b979cbb8e3138e0a4652ea5dc8a..c8d0378b971b8c73446984730608eb895eef813c 100644 --- a/addons/hr_attendance/report/attendance_by_month.py +++ b/addons/hr_attendance/report/attendance_by_month.py @@ -80,11 +80,13 @@ class report_custom(report_rml): if attendences and attendences[-1]['action'] == 'sign_in': attendences.append({'name': tomor.strftime('%Y-%m-%d %H:%M:%S'), 'action':'sign_out'}) # sum up the attendances' durations + ldt = None for att in attendences: dt = datetime.strptime(att['name'], '%Y-%m-%d %H:%M:%S') - if att['action'] == 'sign_out': + if ldt and att['action'] == 'sign_out': wh += (dt - ldt).seconds/60/60 - ldt = dt + else: + ldt = dt # Week xml representation # wh = hour2str(wh) today_xml = '<day num="%s"><wh>%s</wh></day>' % ((today - month).days+1, round(wh,2)) diff --git a/addons/hr_attendance/report/timesheet.py b/addons/hr_attendance/report/timesheet.py index abedddd50c578917d976e3c3f8cee92b19384c81..ff759fb3eaf49b507fd0fd8f554ff0d2f93e589e 100644 --- a/addons/hr_attendance/report/timesheet.py +++ b/addons/hr_attendance/report/timesheet.py @@ -79,10 +79,13 @@ class report_custom(report_rml): if attendances and attendances[-1]['action'] == 'sign_in': attendances.append({'name': n_monday.strftime('%Y-%m-%d %H:%M:%S'), 'action': 'sign_out'}) # sum up the attendances' durations + ldt = None for att in attendances: dt = datetime.strptime(att['name'], '%Y-%m-%d %H:%M:%S') - if att['action'] == 'sign_out': + if ldt and att['action'] == 'sign_out': week_wh[ldt.date().weekday()] = week_wh.get(ldt.date().weekday(), 0) + ((dt - ldt).seconds/3600) + else: + ldt = dt # Week xml representation week_repr = ['<week>', '<weekstart>%s</weekstart>' % monday.strftime('%Y-%m-%d'), '<weekend>%s</weekend>' % n_monday.strftime('%Y-%m-%d')] diff --git a/addons/hr_evaluation/hr_evaluation.py b/addons/hr_evaluation/hr_evaluation.py index 97f00d8b86120ae3912a752d72f204e2e73bcf8b..20bd8a0b327638a343db480ef459cba16f581539 100644 --- a/addons/hr_evaluation/hr_evaluation.py +++ b/addons/hr_evaluation/hr_evaluation.py @@ -235,12 +235,12 @@ class hr_evaluation(osv.osv): hr_eval_inter_obj.survey_req_waiting_answer(cr, uid, [int_id], context=context) if (not wait) and phase.mail_feature: - body = phase.mail_body % {'employee_name': child.name, 'user_signature': user.signature, + body = phase.mail_body % {'employee_name': child.name, 'user_signature': child.user_id.signature, 'eval_name': phase.survey_id.title, 'date': time.strftime('%Y-%m-%d'), 'time': time } sub = phase.email_subject dest = [child.work_email] if dest: - tools.email_send(src, dest, sub, body) + tools.email_send(evaluation.employee_id.work_email, dest, sub, body) self.write(cr, uid, ids, {'state':'wait'}, context=context) return True diff --git a/addons/hr_evaluation/i18n/ru.po b/addons/hr_evaluation/i18n/ru.po index b8b98c309e4fa1400f7169de1f38c8b351956f3f..343cc77f37c95a5fb5f7c56f4c91bbb5cbbe10f8 100644 --- a/addons/hr_evaluation/i18n/ru.po +++ b/addons/hr_evaluation/i18n/ru.po @@ -8,13 +8,13 @@ msgstr "" "Project-Id-Version: openobject-addons\n" "Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n" "POT-Creation-Date: 2009-11-25 12:18+0000\n" -"PO-Revision-Date: 2010-10-15 13:06+0000\n" +"PO-Revision-Date: 2010-10-16 08:48+0000\n" "Last-Translator: Nikolay Chesnokov <chesnokov_n@msn.com>\n" "Language-Team: Russian <ru@li.org>\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2010-10-16 04:48+0000\n" +"X-Launchpad-Export-Date: 2010-10-17 04:53+0000\n" "X-Generator: Launchpad (build Unknown)\n" #. module: hr_evaluation diff --git a/addons/hr_expense/board_hr_expense_view.xml b/addons/hr_expense/board_hr_expense_view.xml index e79f581dce0cf38e2130e86c9f2439c07a405633..4b64a1bdf1900182fa00b6e687c7d74edae6f2ef 100644 --- a/addons/hr_expense/board_hr_expense_view.xml +++ b/addons/hr_expense/board_hr_expense_view.xml @@ -2,7 +2,7 @@ <openerp> <data> - <menuitem id="base.menu_hr_dasboard" name="Dashboard" parent="hr.menu_hr_reporting" sequence="0" groups="base.group_system,base.group_hr_manager,base.group_hr_user"/> + <menuitem id="base.menu_hr_dasboard" name="Dashboard" parent="hr.menu_hr_reporting" sequence="0" groups="base.group_hr_manager,base.group_hr_user"/> <menuitem action="hr.open_board_hr" icon="terp-graph" @@ -16,14 +16,14 @@ <field name="domain">[('state','in',('confirm', 'accepted')),('user_id','=',uid)]</field> <field name="view_id" ref="hr_expense.view_editable_expenses_tree"/> </record> - + <record id="board_hr_expense_form" model="ir.ui.view"> <field name="name">board.hr.expense.form</field> <field name="model">board.board</field> - <field name="inherit_id" ref="hr.board_hr_form"/> + <field name="inherit_id" ref="hr.board_hr_form"/> <field name="type">form</field> <field name="arch" type="xml"> - <xpath expr="/form/hpaned/child1" position="inside"> + <xpath expr="/form/hpaned/child1" position="inside"> <action colspan="4" height="220" name="%(action_my_expense)d" string="My Expenses" /> </xpath> </field> diff --git a/addons/hr_expense/hr_expense.py b/addons/hr_expense/hr_expense.py index 0679fee37b1b176c4aa1bff1a92f7218f60032be..143d27f2d9b0604ca52593b7e714c47c2ae4184b 100644 --- a/addons/hr_expense/hr_expense.py +++ b/addons/hr_expense/hr_expense.py @@ -226,7 +226,7 @@ class hr_expense_line(osv.osv): return res _columns = { - 'name': fields.char('Short Description', size=128, required=True), + 'name': fields.char('Expense Note', size=128, required=True), 'date_value': fields.date('Date', required=True), 'expense_id': fields.many2one('hr.expense.expense', 'Expense', ondelete='cascade', select=True), 'total_amount': fields.function(_amount, method=True, string='Total'), diff --git a/addons/hr_expense/hr_expense_view.xml b/addons/hr_expense/hr_expense_view.xml index 3d92a76a3c3c4e38b820950dc253fd8eb94309ef..9eb073ce52e849469d570c6bcfad4cbe1c5940cf 100644 --- a/addons/hr_expense/hr_expense_view.xml +++ b/addons/hr_expense/hr_expense_view.xml @@ -16,7 +16,7 @@ <field domain="[('type','=','normal'), ('parent_id','!=',False)]" name="analytic_account" groups="analytic.group_analytic_accounting"/> <field name="unit_amount"/> <field name="unit_quantity"/> - <field name="total_amount"/> + <field name="total_amount" sum="Total"/> </tree> </field> </record> @@ -68,10 +68,9 @@ <form string="Expenses Sheet"> <group colspan="4" col="6"> <field name="employee_id" on_change="onchange_employee_id(employee_id)"/> - <field name="name" select="1"/> + <field name="name"/> <field name="ref" groups="base.group_extended"/> - <field name="date" select="1"/> - <field name="amount"/> + <field name="date"/> <field name="currency_id"/> <field name="department_id" groups="base.group_extended"/> <field name="company_id" groups="base.group_multi_company"/> @@ -81,17 +80,23 @@ <newline/> <field colspan="4" name="line_ids" nolabel="1"> <form string="Expense Lines"> - <field name="product_id" on_change="onchange_product_id(product_id, uom_id, parent.employee_id)"/> - <field name="uom_id" on_change="onchange_product_id(product_id, uom_id, parent.employee_id)" widget="selection"/> - <field name="name" /> - <field name="date_value" /> - <field name="unit_quantity"/> - <field name="unit_amount"/> - <field name="ref"/> - <field name="sequence" groups="base.group_extended"/> - <field domain="[('type','=','normal'), ('parent_id','!=',False)]" name="analytic_account" groups="base.group_extended"/> - <newline/> - <field name="total_amount"/> + <group col="6" colspan="4"> + <field name="product_id" on_change="onchange_product_id(product_id, uom_id, parent.employee_id)"/> + <field name="name" colspan="4"/> + <newline/> + <field name="unit_amount"/> + <field name="unit_quantity"/> + <field name="uom_id" on_change="onchange_product_id(product_id, uom_id, parent.employee_id)" widget="selection"/> + </group> + <group colspan="2" col="2" groups="analytic.group_analytic_accounting"> + <separator string="Customer Project" colspan="2"/> + <field domain="[('type','=','normal')]" name="analytic_account"/> + </group> + <group colspan="2" col="2"> + <separator string="References" colspan="2"/> + <field name="date_value" /> + <field name="ref"/> + </group> </form> </field> <field name="state"/> @@ -99,8 +104,8 @@ <button name="draft" states="confirm,cancelled" string="Set to Draft" type="workflow" icon="gtk-convert"/> <button name="refuse" states="confirm,accepted" string="Refuse" type="workflow" icon="gtk-no" groups="base.group_hr_manager" /> <button name="confirm" states="draft" string="Confirm" type="workflow" icon="gtk-apply"/> - <button name="invoice" states="accepted" string="Invoice" type="workflow" icon="gtk-execute"/> - <button name="validate" states="confirm" string="Approve" type="workflow" icon="terp-camera_test"/> + <button name="invoice" states="accepted" string="Invoice" type="workflow" icon="gtk-go-forward"/> + <button name="validate" states="confirm" string="Approve" type="workflow" icon="gtk-go-forward"/> </group> </page> <page string="Other Info" groups="base.group_extended"> diff --git a/addons/hr_holidays/hr_holidays.py b/addons/hr_holidays/hr_holidays.py index eca3c02f3019f69363830b187ed5bac233c3675f..79710a569fbaa9d1adbbf75f1716fa46b1ccb35a 100644 --- a/addons/hr_holidays/hr_holidays.py +++ b/addons/hr_holidays/hr_holidays.py @@ -240,8 +240,7 @@ class hr_holidays(osv.osv): if record.case_id: self.pool.get('crm.meeting').unlink(cr, uid, [record.case_id.id]) if record.linked_request_ids: - list_ids = [] - [list_ids.append(i) for id in record.linked_request_ids] + list_ids = [ lr.id for lr in record.linked_request_ids] self.holidays_cancel(cr, uid, list_ids) self.unlink(cr, uid, list_ids) diff --git a/addons/hr_holidays/report/holidays_summary.xsl b/addons/hr_holidays/report/holidays_summary.xsl index 67bb2a58769e136126b97d48ff8c66b6ac05a034..c0a24e551ff2fd4b8ec82ea47ef8a18f12c78d91 100644 --- a/addons/hr_holidays/report/holidays_summary.xsl +++ b/addons/hr_holidays/report/holidays_summary.xsl @@ -4,257 +4,257 @@ xmlns:fo="http://www.w3.org/1999/XSL/Format"> <xsl:import href="hr_custom_default.xsl"/> - <xsl:import href="hr_custom_rml.xsl"/> + <xsl:import href="hr_custom_rml.xsl"/> - <xsl:template match="/"> - <xsl:call-template name="rml" /> - </xsl:template> + <xsl:template match="/"> + <xsl:call-template name="rml" /> + </xsl:template> - <xsl:template name="stylesheet"> - <paraStyle name="normal" fontName="Helvetica" fontSize="6" alignment="left" /> - <paraStyle name="normal-title" fontName="Helvetica" fontSize="10" alignment="center"/> - <paraStyle name="digits" fontName="Helvetica" fontSize="6" alignment="left"/> - <paraStyle name="title" fontName="Helvetica" fontSize="18" alignment="center" /> - <paraStyle name="dept" fontName="Helvetica-Bold" fontSize="8" alignment="left" /> - <paraStyle name="employee" fontName="Helvetica-Bold" fontSize="6" textColor="black" /> - <paraStyle name="leaveid" fontName="Helvetica" fontSize="6" alignment="center" /> - <paraStyle name="print-date" fontName="Helvetica" fontSize="11" alignment="right" /> - <paraStyle name="sum" fontName="Helvetica-BoldOblique" fontSize="6" alignment="left" /> - <paraStyle name="company" textColor="purple" fontName="Helvetica-Bold" fontSize="11" alignment="left"/> - <blockTableStyle id="header"> - <blockAlignment value="LEFT" start="0,0" stop="-1,-1"/> - <blockFont name="Helvetica" size="8" start="0,0" stop="-1,-1"/> - <blockValign value="TOP"/> - </blockTableStyle> - <blockTableStyle id="products"> - <blockAlignment value="CENTER" start="1,0" stop="-1,-1"/> - <lineStyle kind="LINEABOVE" colorName="black" start="0,0" stop="-1,-1" /> - <lineStyle kind="LINEBEFORE" colorName="black" start="0,0" stop="-1,-1"/> - <lineStyle kind="LINEAFTER" colorName="black" start="-1,0" stop="-1,-1"/> - <lineStyle kind="LINEBELOW" colorName="black" start="0,-1" stop="-1,-1"/> - <blockFont name="Helvetica-Bold" size="8" start="0,-1" stop="-1,-1"/> - <blockValign value="TOP"/> - </blockTableStyle> - <blockTableStyle id="legend"> - <blockAlignment value="CENTER" start="0,0" stop="-1,-1" /> - <blockFont name="Helvetica" size="7" start="0,0" stop="-1,-1"/> - <lineStyle kind="LINEABOVE" colorName="black" start="0,0" stop="-1,-1" /> - <lineStyle kind="LINEBEFORE" colorName="black" start="0,0" stop="-1,-1"/> - <lineStyle kind="LINEAFTER" colorName="black" start="-1,0" stop="-1,-1"/> - <lineStyle kind="LINEBELOW" colorName="black" start="0,-1" stop="-1,-1"/> - <blockBackground colorName="#FFFFFF" start="0,0" stop="-1,-1"/> - <xsl:for-each select="/report/legend"> - <blockBackground> - <xsl:attribute name="colorName"> - <xsl:value-of select="attribute::color" /> - </xsl:attribute> - <xsl:attribute name="start"> - <xsl:text>0,</xsl:text> - <xsl:value-of select="attribute::row" /> - </xsl:attribute> - <xsl:attribute name="stop"> - <xsl:text>0,</xsl:text> - <xsl:value-of select="attribute::row" /> - </xsl:attribute> - </blockBackground> - </xsl:for-each> - <blockValign value="TOP"/> - </blockTableStyle> - <blockTableStyle id="month"> - <blockAlignment value="CENTER" start="1,0" stop="-1,-1" /> - <blockFont name="Helvetica" size="5" start="0,0" stop="-1,-1"/> - <blockFont name="Helvetica-BoldOblique" size="4.5" start="-1,0" stop="-1,-1"/> - <blockBackground colorName="#FFFFFF" start="1,0" stop="-2,1"/> - <xsl:for-each select="/report/days/dayy[@name='Sat' or @name='Sun']"> - <xsl:variable name="col" select="attribute::cell" /> - <blockBackground> - <xsl:attribute name="colorName">lightgrey</xsl:attribute> - <xsl:attribute name="start"> - <xsl:value-of select="$col" /> - <xsl:text>,0</xsl:text> - </xsl:attribute> - <xsl:attribute name="stop"> - <xsl:value-of select="$col" /> - <xsl:text>,-1</xsl:text> - </xsl:attribute> - </blockBackground> - </xsl:for-each> - <xsl:for-each select="/report/info"> - <xsl:variable name="val" select="attribute::val" /> - <xsl:variable name="col" select="attribute::number" /> - <xsl:variable name="row" select="attribute::id" /> - <xsl:for-each select="/report/legend"> - <xsl:variable name="val_id" select="attribute::id" /> - <xsl:variable name="color" select="attribute::color" /> - <xsl:if test="$val_id = $val "> - <blockBackground> - <xsl:attribute name="colorName"><xsl:value-of select="$color" /></xsl:attribute> - <xsl:attribute name="start"> - <xsl:value-of select="$col" /> - <xsl:text>,</xsl:text> - <xsl:value-of select="$row + 1" /> - </xsl:attribute> - <xsl:attribute name="stop"> - <xsl:value-of select="$col" /> - <xsl:text>,</xsl:text> - <xsl:value-of select="$row + 1" /> - </xsl:attribute> - </blockBackground> - </xsl:if> - </xsl:for-each> - </xsl:for-each> - <xsl:for-each select="report/employee"> - <xsl:variable name="dept" select="attribute::id" /> - <xsl:variable name="row" select="attribute::row" /> - <xsl:if test="$dept = 1"> - <blockBackground> - <xsl:attribute name="colorName">lightgrey</xsl:attribute> - <xsl:attribute name="start"> - <xsl:text>0,</xsl:text> - <xsl:value-of select="$row +1" /> - </xsl:attribute> - <xsl:attribute name="stop"> - <xsl:text>0,</xsl:text> - <xsl:value-of select="$row +1" /> - </xsl:attribute> - </blockBackground> - </xsl:if> - </xsl:for-each> - <lineStyle kind="LINEABOVE" colorName="black" start="0,0" stop="-1,-1" /> - <lineStyle kind="LINEBEFORE" colorName="black" start="0,0" stop="-1,-1"/> - <lineStyle kind="LINEAFTER" colorName="black" start="-1,0" stop="-1,-1"/> - <lineStyle kind="LINEBELOW" colorName="black" start="0,-1" stop="-1,-1"/> - <blockValign value="TOP"/> - </blockTableStyle> - </xsl:template> + <xsl:template name="stylesheet"> + <paraStyle name="normal" fontName="Helvetica" fontSize="6" alignment="left" /> + <paraStyle name="normal-title" fontName="Helvetica" fontSize="10" alignment="center"/> + <paraStyle name="digits" fontName="Helvetica" fontSize="6" alignment="left"/> + <paraStyle name="title" fontName="Helvetica" fontSize="18" alignment="center" /> + <paraStyle name="dept" fontName="Helvetica-Bold" fontSize="8" alignment="left" /> + <paraStyle name="employee" fontName="Helvetica-Bold" fontSize="6" textColor="black" /> + <paraStyle name="leaveid" fontName="Helvetica" fontSize="6" alignment="center" /> + <paraStyle name="print-date" fontName="Helvetica" fontSize="11" alignment="right" /> + <paraStyle name="sum" fontName="Helvetica-BoldOblique" fontSize="6" alignment="left" /> + <paraStyle name="company" textColor="purple" fontName="Helvetica-Bold" fontSize="11" alignment="left"/> + <blockTableStyle id="header"> + <blockAlignment value="LEFT" start="0,0" stop="-1,-1"/> + <blockFont name="Helvetica" size="8" start="0,0" stop="-1,-1"/> + <blockValign value="TOP"/> + </blockTableStyle> + <blockTableStyle id="products"> + <blockAlignment value="CENTER" start="1,0" stop="-1,-1"/> + <lineStyle kind="LINEABOVE" colorName="black" start="0,0" stop="-1,-1" /> + <lineStyle kind="LINEBEFORE" colorName="black" start="0,0" stop="-1,-1"/> + <lineStyle kind="LINEAFTER" colorName="black" start="-1,0" stop="-1,-1"/> + <lineStyle kind="LINEBELOW" colorName="black" start="0,-1" stop="-1,-1"/> + <blockFont name="Helvetica-Bold" size="8" start="0,-1" stop="-1,-1"/> + <blockValign value="TOP"/> + </blockTableStyle> + <blockTableStyle id="legend"> + <blockAlignment value="CENTER" start="0,0" stop="-1,-1" /> + <blockFont name="Helvetica" size="7" start="0,0" stop="-1,-1"/> + <lineStyle kind="LINEABOVE" colorName="black" start="0,0" stop="-1,-1" /> + <lineStyle kind="LINEBEFORE" colorName="black" start="0,0" stop="-1,-1"/> + <lineStyle kind="LINEAFTER" colorName="black" start="-1,0" stop="-1,-1"/> + <lineStyle kind="LINEBELOW" colorName="black" start="0,-1" stop="-1,-1"/> + <blockBackground colorName="#FFFFFF" start="0,0" stop="-1,-1"/> + <xsl:for-each select="/report/legend"> + <blockBackground> + <xsl:attribute name="colorName"> + <xsl:value-of select="attribute::color" /> + </xsl:attribute> + <xsl:attribute name="start"> + <xsl:text>0,</xsl:text> + <xsl:value-of select="attribute::row" /> + </xsl:attribute> + <xsl:attribute name="stop"> + <xsl:text>0,</xsl:text> + <xsl:value-of select="attribute::row" /> + </xsl:attribute> + </blockBackground> + </xsl:for-each> + <blockValign value="TOP"/> + </blockTableStyle> + <blockTableStyle id="month"> + <blockAlignment value="CENTER" start="1,0" stop="-1,-1" /> + <blockFont name="Helvetica" size="5" start="0,0" stop="-1,-1"/> + <blockFont name="Helvetica-BoldOblique" size="4.5" start="-1,0" stop="-1,-1"/> + <blockBackground colorName="#FFFFFF" start="1,0" stop="-2,1"/> + <xsl:for-each select="/report/days/dayy[@name='Sat' or @name='Sun']"> + <xsl:variable name="col" select="attribute::cell" /> + <blockBackground> + <xsl:attribute name="colorName">lightgrey</xsl:attribute> + <xsl:attribute name="start"> + <xsl:value-of select="$col" /> + <xsl:text>,0</xsl:text> + </xsl:attribute> + <xsl:attribute name="stop"> + <xsl:value-of select="$col" /> + <xsl:text>,-1</xsl:text> + </xsl:attribute> + </blockBackground> + </xsl:for-each> + <xsl:for-each select="/report/info"> + <xsl:variable name="val" select="attribute::val" /> + <xsl:variable name="col" select="attribute::number" /> + <xsl:variable name="row" select="attribute::id" /> + <xsl:for-each select="/report/legend"> + <xsl:variable name="val_id" select="attribute::id" /> + <xsl:variable name="color" select="attribute::color" /> + <xsl:if test="$val_id = $val "> + <blockBackground> + <xsl:attribute name="colorName"><xsl:value-of select="$color" /></xsl:attribute> + <xsl:attribute name="start"> + <xsl:value-of select="$col" /> + <xsl:text>,</xsl:text> + <xsl:value-of select="$row + 1" /> + </xsl:attribute> + <xsl:attribute name="stop"> + <xsl:value-of select="$col" /> + <xsl:text>,</xsl:text> + <xsl:value-of select="$row + 1" /> + </xsl:attribute> + </blockBackground> + </xsl:if> + </xsl:for-each> + </xsl:for-each> + <xsl:for-each select="report/employee"> + <xsl:variable name="dept" select="attribute::id" /> + <xsl:variable name="row" select="attribute::row" /> + <xsl:if test="$dept = 1"> + <blockBackground> + <xsl:attribute name="colorName">lightgrey</xsl:attribute> + <xsl:attribute name="start"> + <xsl:text>0,</xsl:text> + <xsl:value-of select="$row +1" /> + </xsl:attribute> + <xsl:attribute name="stop"> + <xsl:text>0,</xsl:text> + <xsl:value-of select="$row +1" /> + </xsl:attribute> + </blockBackground> + </xsl:if> + </xsl:for-each> + <lineStyle kind="LINEABOVE" colorName="black" start="0,0" stop="-1,-1" /> + <lineStyle kind="LINEBEFORE" colorName="black" start="0,0" stop="-1,-1"/> + <lineStyle kind="LINEAFTER" colorName="black" start="-1,0" stop="-1,-1"/> + <lineStyle kind="LINEBELOW" colorName="black" start="0,-1" stop="-1,-1"/> + <blockValign value="TOP"/> + </blockTableStyle> + </xsl:template> - <xsl:template name="story"> - <xsl:variable name="cols_header"> - <xsl:text>13.7cm,13.7cm</xsl:text> - </xsl:variable> - <blockTable> - <xsl:attribute name="style">header</xsl:attribute> - <xsl:attribute name="colWidths"><xsl:value-of select="$cols_header"/></xsl:attribute> - <tr> - <xsl:for-each select="report/res"> - <td> - <para> - </para> - </td> - <td> - <para> - </para> - </td> - </xsl:for-each> - </tr> - </blockTable> - <spacer length="1.0cm" /> - <para style="title" t="1">Off-Days' Summary</para> - <spacer length="0.5cm" /> - <para style="normal-title" t="1">Analyze from <u><xsl:value-of select="report/from" /></u> to <u> <xsl:value-of select="report/to" /> </u> of the <u><xsl:value-of select="report/type" /></u> holidays. </para> - <spacer length="1.0cm" /> - <xsl:variable name="cols_legend"> - <xsl:text>0.7cm,5.0cm</xsl:text> - </xsl:variable> - <blockTable> - <xsl:attribute name="style">products</xsl:attribute> - <xsl:attribute name="colWidths"><xsl:value-of select="report/cols_months"/></xsl:attribute> - <tr> - <td>Month</td> - <xsl:for-each select="report/months"> - <td> - <xsl:value-of select="attribute::name" /> - </td> - </xsl:for-each> - <td> </td> - </tr> - </blockTable> + <xsl:template name="story"> + <xsl:variable name="cols_header"> + <xsl:text>13.7cm,13.7cm</xsl:text> + </xsl:variable> + <blockTable> + <xsl:attribute name="style">header</xsl:attribute> + <xsl:attribute name="colWidths"><xsl:value-of select="$cols_header"/></xsl:attribute> + <tr> + <xsl:for-each select="report/res"> + <td> + <para> + </para> + </td> + <td> + <para> + </para> + </td> + </xsl:for-each> + </tr> + </blockTable> + <spacer length="1.0cm" /> + <para style="title" t="1">Off-Days' Summary</para> + <spacer length="0.5cm" /> + <para style="normal-title" t="1">Analyze from <u><xsl:value-of select="report/from" /></u> to <u> <xsl:value-of select="report/to" /> </u> of the <u><xsl:value-of select="report/type" /></u> holidays. </para> + <spacer length="1.0cm" /> + <xsl:variable name="cols_legend"> + <xsl:text>0.7cm,5.0cm</xsl:text> + </xsl:variable> + <blockTable> + <xsl:attribute name="style">products</xsl:attribute> + <xsl:attribute name="colWidths"><xsl:value-of select="report/cols_months"/></xsl:attribute> + <tr> + <td>Month</td> + <xsl:for-each select="report/months"> + <td> + <xsl:value-of select="attribute::name" /> + </td> + </xsl:for-each> + <td> </td> + </tr> + </blockTable> - <blockTable> - <xsl:attribute name="style">month</xsl:attribute> - <xsl:attribute name="colWidths"><xsl:value-of select="report/cols" /></xsl:attribute> - <tr> - <td> </td> - <xsl:for-each select="report/days/dayy"> - <td> - <xsl:value-of select="attribute::name" /> - </td> - </xsl:for-each> - <td> </td> - </tr> - <tr> - <td><para> - <xsl:attribute name="style">employee</xsl:attribute> - Departments & Employees - </para> - </td> - <xsl:for-each select="report/days/dayy"> - <td><para><xsl:attribute name="style">digits</xsl:attribute> - <xsl:value-of select="attribute::number" /></para> - </td> - </xsl:for-each> - <td>Sum</td> + <blockTable> + <xsl:attribute name="style">month</xsl:attribute> + <xsl:attribute name="colWidths"><xsl:value-of select="report/cols" /></xsl:attribute> + <tr> + <td> </td> + <xsl:for-each select="report/days/dayy"> + <td> + <xsl:value-of select="attribute::name" /> + </td> + </xsl:for-each> + <td> </td> + </tr> + <tr> + <td><para> + <xsl:attribute name="style">employee</xsl:attribute> + Departments and Employees + </para> + </td> + <xsl:for-each select="report/days/dayy"> + <td><para><xsl:attribute name="style">digits</xsl:attribute> + <xsl:value-of select="attribute::number" /></para> + </td> + </xsl:for-each> + <td>Sum</td> </tr> - <xsl:apply-templates select="report/employee"/> - <xsl:for-each select="report/employee"> - <xsl:variable name="id" select="attribute::id"/> - <xsl:variable name="rw" select="attribute::row"/> - <xsl:variable name="sum" select="attribute::sum"/> - <tr> - <td t="1"> - <para> - <xsl:choose> - <xsl:when test="$id = 1"> - <xsl:attribute name="style">dept</xsl:attribute> - </xsl:when> - <xsl:otherwise> - <xsl:attribute name="style">normal</xsl:attribute> - </xsl:otherwise> - </xsl:choose> - <xsl:value-of select="attribute::name"/> - </para> - </td> - <xsl:for-each select="//report/days/dayy"> - <xsl:variable name="cell" select="attribute::cell" /> - <td> - <para><xsl:attribute name="style">digits</xsl:attribute> - <xsl:value-of select="//employee[@row=$rw]/time-element[@index=$cell]"/> - </para> + <xsl:apply-templates select="report/employee"/> + <xsl:for-each select="report/employee"> + <xsl:variable name="id" select="attribute::id"/> + <xsl:variable name="rw" select="attribute::row"/> + <xsl:variable name="sum" select="attribute::sum"/> + <tr> + <td t="1"> + <para> + <xsl:choose> + <xsl:when test="$id = 1"> + <xsl:attribute name="style">dept</xsl:attribute> + </xsl:when> + <xsl:otherwise> + <xsl:attribute name="style">normal</xsl:attribute> + </xsl:otherwise> + </xsl:choose> + <xsl:value-of select="attribute::name"/> + </para> + </td> + <xsl:for-each select="//report/days/dayy"> + <xsl:variable name="cell" select="attribute::cell" /> + <td> + <para><xsl:attribute name="style">digits</xsl:attribute> + <xsl:value-of select="//employee[@row=$rw]/time-element[@index=$cell]"/> + </para> - </td> - </xsl:for-each> - <td><para> - <xsl:attribute name="style">sum</xsl:attribute><xsl:value-of select="attribute::sum"/></para></td> - </tr> - </xsl:for-each> + </td> + </xsl:for-each> + <td><para> + <xsl:attribute name="style">sum</xsl:attribute><xsl:value-of select="attribute::sum"/></para></td> + </tr> + </xsl:for-each> - </blockTable> - <spacer length="1cm" /> - <condPageBreak height="1in" /> - <blockTable> - <xsl:attribute name="style">legend</xsl:attribute> - <xsl:attribute name="colWidths"><xsl:value-of select="$cols_legend"/></xsl:attribute> - <tr> - <td>Color</td> - <td>Holiday Type</td> + </blockTable> + <spacer length="1cm" /> + <condPageBreak height="1in" /> + <blockTable> + <xsl:attribute name="style">legend</xsl:attribute> + <xsl:attribute name="colWidths"><xsl:value-of select="$cols_legend"/></xsl:attribute> + <tr> + <td>Color</td> + <td>Holiday Type</td> - </tr> - <xsl:for-each select="report/legend"> - <tr> - <td> - <para> - <xsl:attribute name="style">digits</xsl:attribute> - <xsl:value-of select="attribute::id"/> - </para> - </td> - <td> - <para> - <xsl:attribute name="style">normal</xsl:attribute> - <xsl:value-of select="attribute::name"/> - </para> - </td> + </tr> + <xsl:for-each select="report/legend"> + <tr> + <td> + <para> + <xsl:attribute name="style">digits</xsl:attribute> + <xsl:value-of select="attribute::id"/> + </para> + </td> + <td> + <para> + <xsl:attribute name="style">normal</xsl:attribute> + <xsl:value-of select="attribute::name"/> + </para> + </td> </tr> </xsl:for-each> - </blockTable> - </xsl:template> + </blockTable> + </xsl:template> </xsl:stylesheet> diff --git a/addons/hr_payroll/__openerp__.py b/addons/hr_payroll/__openerp__.py index c9339ce013c0078434e9ed3c7708aad590337e91..65b593c5891a1a46676b619a92ed889c1f29fb05 100644 --- a/addons/hr_payroll/__openerp__.py +++ b/addons/hr_payroll/__openerp__.py @@ -33,7 +33,7 @@ * Monthly Payroll Register * Integrated with Holiday Management """, - 'author':'OpenERP SA/Axelor', + 'author':'OpenERP SA', 'website':'http://www.openerp.com', 'depends': [ 'hr', diff --git a/addons/hr_payroll/report/rml_parse.py b/addons/hr_payroll/report/rml_parse.py index 7abb29711b61b1ae619a02bd3ec33a335abb37a9..0eb783de39fe925da3381bfb31fa4a230619acbc 100755 --- a/addons/hr_payroll/report/rml_parse.py +++ b/addons/hr_payroll/report/rml_parse.py @@ -68,7 +68,7 @@ class rml_parse(report_sxw.rml_parse): def _get_and_change_date_format_for_swiss (self,date_to_format): date_formatted='' if date_to_format: - date_formatted = strptime (date_to_format,'%Y-%m-%d').strftime('%d.%m.%Y') + date_formatted = strptime(date_to_format,'%Y-%m-%d').strftime('%d.%m.%Y') return date_formatted def _explode_name(self,chaine,length): @@ -107,7 +107,7 @@ class rml_parse(report_sxw.rml_parse): return Stringer def explode_this(self,chaine,length): - chaine = rstrip(chaine) + chaine = chaine.rstrip() ast = list(chaine) i = length while i <= len(ast): diff --git a/addons/hr_payroll_account/__openerp__.py b/addons/hr_payroll_account/__openerp__.py index 97ae94a361caf78d0c79cab2efa1a3f96c048cb3..d65570a1ad9561a97ae2595146aa887bacc11848 100644 --- a/addons/hr_payroll_account/__openerp__.py +++ b/addons/hr_payroll_account/__openerp__.py @@ -28,7 +28,7 @@ * Payment Encoding * Company Contribution Management """, - 'author':'OpenERP SA/Axelor', + 'author':'OpenERP SA', 'website':'http://www.openerp.com', 'depends': [ 'hr_payroll', diff --git a/addons/hr_payroll_account/hr_payroll_account.py b/addons/hr_payroll_account/hr_payroll_account.py index dcef94c3f3592d89db675540d36c9109721a5261..d9f963ed5370fd0781db91ce0885999c4041ca29 100644 --- a/addons/hr_payroll_account/hr_payroll_account.py +++ b/addons/hr_payroll_account/hr_payroll_account.py @@ -28,8 +28,6 @@ from osv import fields, osv from tools import config from tools.translate import _ - - def prev_bounds(cdate=False): when = date.fromtimestamp(time.mktime(time.strptime(cdate,"%Y-%m-%d"))) this_first = date(when.year, when.month, 1) @@ -572,8 +570,9 @@ class hr_payslip(osv.osv): line_ids += [movel_pool.create(cr, uid, rec, context=context)] - for contrub in line.category_id.contribute_ids: - print contrib.name, contrub.code, contrub.amount_type, contrib.contribute_per, line.total + # if self._debug: + # for contrib in line.category_id.contribute_ids: + # _log.debug("%s %s %s %s %s", contrib.name, contrub.code, contrub.amount_type, contrib.contribute_per, line.total) adj_move_id = False if total_deduct > 0: diff --git a/addons/hr_recruitment/board_hr_recruitment_statistical_view.xml b/addons/hr_recruitment/board_hr_recruitment_statistical_view.xml index 7416ff8b0abccd96ade1fbd3a6f853f9ff6d9255..0cf34e36de4fbbcc27b34ce24c36b9ab8bf6f323 100644 --- a/addons/hr_recruitment/board_hr_recruitment_statistical_view.xml +++ b/addons/hr_recruitment/board_hr_recruitment_statistical_view.xml @@ -38,7 +38,7 @@ </xpath> </field> </record> - <menuitem id="base.menu_hr_dasboard" name="Dashboard" parent="hr.menu_hr_reporting" sequence="0" groups="base.group_system,base.group_hr_manager,base.group_hr_user"/> + <menuitem id="base.menu_hr_dasboard" name="Dashboard" parent="hr.menu_hr_reporting" sequence="0" groups="base.group_hr_manager,base.group_hr_user"/> <menuitem action="hr.open_board_hr_manager" icon="terp-graph" diff --git a/addons/hr_recruitment/hr_recruitment.py b/addons/hr_recruitment/hr_recruitment.py index 56217455475395994fe4ba45c85dfccf9992af88..c676b4199bef188a93be5a700886fc4156acd128 100644 --- a/addons/hr_recruitment/hr_recruitment.py +++ b/addons/hr_recruitment/hr_recruitment.py @@ -332,9 +332,6 @@ class hr_applicant(crm.crm_case, osv.osv): vals.update(res) res = self.create(cr, uid, vals, context=context) - message = _('A Job Request created') + " '" + subject + "' " + _("from Mailgate.") - self.log(cr, uid, res, message) - attachents = msg.get('attachments', []) for attactment in attachents or []: data_attach = { @@ -410,7 +407,7 @@ class hr_applicant(crm.crm_case, osv.osv): if not date['date_open']: self.write(cr, uid, ids, {'date_open': time.strftime('%Y-%m-%d %H:%M:%S'),}) for (id, name) in self.name_get(cr, uid, ids): - message = _('Job request for') + " '" + name + "' "+ _("is Open.") + message = _("The job request '%s' has been set 'in progress'.") % name self.log(cr, uid, id, message) return res @@ -426,7 +423,7 @@ class hr_applicant(crm.crm_case, osv.osv): job_obj = self.pool.get('hr.job') res = super(hr_applicant, self).case_close(cr, uid, ids, *args) for (id, name) in self.name_get(cr, uid, ids): - message = _('Applicant ') + " '" + name + "' "+ _("is Hired.") + message = _("Applicant '%s' is being hired.") % name self.log(cr, uid, id, message) applicant = self.browse(cr, uid, ids)[0] diff --git a/addons/hr_recruitment/report/hr_recruitment_report_view.xml b/addons/hr_recruitment/report/hr_recruitment_report_view.xml index f5e74724c252b21e0ce0792166e57df174ec14b5..a38cf0185dff3a7b9af1bad1e49f6a4a0f26e37e 100644 --- a/addons/hr_recruitment/report/hr_recruitment_report_view.xml +++ b/addons/hr_recruitment/report/hr_recruitment_report_view.xml @@ -49,39 +49,39 @@ <field name="type">search</field> <field name="arch" type="xml"> <search string="Recruitment Analysis"> - <group> - <filter icon="terp-go-year" string="Year" - domain="[('date','<=', time.strftime('%%Y-%%m-%%d')),('date','>=',time.strftime('%%Y-01-01'))]" - help="Recruitment performed in current year"/> - <filter icon="terp-go-month" string="Month" - name="month" - domain="[('date','<=',(datetime.date.today()+relativedelta(day=31)).strftime('%%Y-%%m-%%d')),('date','>=',(datetime.date.today()-relativedelta(day=1)).strftime('%%Y-%%m-%%d'))]" - help="Recruitment performed in current month"/> - <filter icon="terp-go-month" - string=" Month-1 " - separator="1" - domain="[('date','<=', (datetime.date.today() - relativedelta(day=31, months=1)).strftime('%%Y-%%m-%%d')),('date','>=',(datetime.date.today() - relativedelta(day=1,months=1)).strftime('%%Y-%%m-%%d'))]" - help="Recruitment during last month"/> - <separator orientation="vertical"/> - <filter string="New" - icon="terp-document-new" - domain="[('state','=','draft')]" - help = "Draft recruitment"/> - <filter string="In progress" - icon="terp-check" - domain="[('state', '=' ,'open')]" - help = "In progress recruitment"/> - <filter string="Pending" - icon="terp-gtk-media-pause" - domain="[('state','=','pending')]" - help = "Pending recruitment"/> + <group> + <filter icon="terp-go-year" string="Year" + domain="[('date','<=', time.strftime('%%Y-%%m-%%d')),('date','>=',time.strftime('%%Y-01-01'))]" + help="Recruitment performed in current year"/> + <filter icon="terp-go-month" string="Month" + name="month" + domain="[('date','<=',(datetime.date.today()+relativedelta(day=31)).strftime('%%Y-%%m-%%d')),('date','>=',(datetime.date.today()-relativedelta(day=1)).strftime('%%Y-%%m-%%d'))]" + help="Recruitment performed in current month"/> + <filter icon="terp-go-month" + string=" Month-1 " + separator="1" + domain="[('date','<=', (datetime.date.today() - relativedelta(day=31, months=1)).strftime('%%Y-%%m-%%d')),('date','>=',(datetime.date.today() - relativedelta(day=1,months=1)).strftime('%%Y-%%m-%%d'))]" + help="Recruitment during last month"/> + <separator orientation="vertical"/> + <filter string="New" + icon="terp-document-new" + domain="[('state','=','draft')]" + help = "Draft recruitment"/> + <filter string="In progress" + icon="terp-check" + domain="[('state', '=' ,'open')]" + help = "In progress recruitment"/> + <filter string="Pending" + icon="terp-gtk-media-pause" + domain="[('state','=','pending')]" + help = "Pending recruitment"/> <filter string="Hired" - icon="terp-camera_test" - domain="[('state','=','done')]" - help = "Hired employees"/> - <separator orientation="vertical"/> - <field name="job_id"/> - <field name="department_id" widget="selection"/> + icon="terp-camera_test" + domain="[('state','=','done')]" + help = "Hired employees"/> + <separator orientation="vertical"/> + <field name="job_id"/> + <field name="department_id" widget="selection"/> <field name="user_id" string="Responsible"> <filter icon="terp-personal" string="My Recruitment" @@ -108,13 +108,13 @@ <filter string="Department" name="department" icon="terp-personal+" domain="[]" context="{'group_by':'department_id'}"/> <separator orientation="vertical"/> <filter string="Degree" name="degree" icon="terp-gtk-select-all" domain="[]" context="{'group_by':'type_id'}"/> - <separator orientation="vertical"/> - <filter string="Stage" icon="terp-stage" domain="[]" context="{'group_by':'stage_id'}" /> + <separator orientation="vertical"/> + <filter string="Stage" icon="terp-stage" domain="[]" context="{'group_by':'stage_id'}" /> <filter string="State" icon="terp-stock_effects-object-colorize" domain="[]" context="{'group_by':'state'}"/> <separator orientation="vertical"/> - <filter string="Day" name = "day" icon="terp-go-today" domain="[]" context="{'group_by':'day'}" help="Creation Date"/> - <filter string="Month" icon="terp-go-month" domain="[]" context="{'group_by':'month'}" help="Creation Date"/> - <filter string="Year" icon="terp-go-year" domain="[]" context="{'group_by':'year'}" help="Creation Date"/> + <filter string="Day" name = "day" icon="terp-go-today" domain="[]" context="{'group_by':'day'}" help="Creation Date"/> + <filter string="Month" icon="terp-go-month" domain="[]" context="{'group_by':'month'}" help="Creation Date"/> + <filter string="Year" icon="terp-go-year" domain="[]" context="{'group_by':'year'}" help="Creation Date"/> </group> @@ -130,7 +130,7 @@ <field name="context">{'search_default_month':1,'search_default_department':1,'group_by_no_leaf':1,'group_by':[]}</field> <field name="search_view_id" ref="view_hr_recruitment_report_search"/> </record> - <menuitem id="hr.menu_hr_reporting" name="Reporting" parent="hr.menu_hr_root" sequence="10" groups="base.group_hr_manager,base.group_hr_user"/> + <menuitem id="hr.menu_hr_reporting" name="Reporting" parent="hr.menu_hr_root" sequence="10" groups="base.group_hr_manager,base.group_hr_user"/> <menuitem action="action_hr_recruitment_report_all" id="menu_hr_recruitment_report_all" parent="hr.menu_hr_reporting" sequence="1"/> </data> diff --git a/addons/hr_recruitment/wizard/hr_recruitment_phonecall.py b/addons/hr_recruitment/wizard/hr_recruitment_phonecall.py index 7cb5366a275c0c7b1c61d9e86d9c4a488b2c610c..6e817eaf49af0a53f405799afd64bb8221fba8e7 100644 --- a/addons/hr_recruitment/wizard/hr_recruitment_phonecall.py +++ b/addons/hr_recruitment/wizard/hr_recruitment_phonecall.py @@ -42,8 +42,10 @@ class job2phonecall(osv.osv_memory): return case.user_id and case.user_id.id or False def _date_category(self, cr, uid, context=None): + case_obj = self.pool.get('hr.applicant') if context is None: context = {} + case = case_obj.browse(cr, uid, context['active_id'], context=context) categ_id = self.pool.get('crm.case.categ').search(cr, uid, [('name','=','Outbound')], context=context) return categ_id and categ_id[0] or case.categ_id and case.categ_id.id or False diff --git a/addons/hr_timesheet/hr_timesheet.py b/addons/hr_timesheet/hr_timesheet.py index 84e7db409abd73e09512ea2c0ca5b4918c882840..20d976342149fefa0789dcf8db1aebb4c5e2cc9d 100644 --- a/addons/hr_timesheet/hr_timesheet.py +++ b/addons/hr_timesheet/hr_timesheet.py @@ -23,7 +23,6 @@ import time from osv import fields from osv import osv -from osv.orm import except_orm from tools.translate import _ class hr_employee(osv.osv): @@ -39,7 +38,7 @@ class hr_employee(osv.osv): try: result = md.get_object_reference(cr, uid, 'hr_timesheet', 'analytic_journal') return result[1] - except ValueError, e: + except ValueError: pass return False @@ -48,7 +47,7 @@ class hr_employee(osv.osv): try: result = md.get_object_reference(cr, uid, 'hr_timesheet', 'product_consultant') return result[1] - except ValueError, e: + except ValueError: pass return False @@ -87,7 +86,9 @@ class hr_analytic_timesheet(osv.osv): if prod_id and unit_amount: # find company company_id = self.pool.get('res.company')._company_default_get(cr, uid, 'account.analytic.line', context=context) - res.update(self.pool.get('account.analytic.line').on_change_unit_amount(cr, uid, id, prod_id, unit_amount, company_id, unit, journal_id, context=context)) + r = self.pool.get('account.analytic.line').on_change_unit_amount(cr, uid, id, prod_id, unit_amount, company_id, unit, journal_id, context=context) + if r: + res.update(r) # update unit of measurement if prod_id: uom = self.pool.get('product.product').browse(cr, uid, prod_id, context=context) diff --git a/addons/hr_timesheet/hr_timesheet_data.xml b/addons/hr_timesheet/hr_timesheet_data.xml index e7cb3d5e0d4e33283ecfce9e39de1dee3a935c0e..a19b2c67291784fb4ec1a7df9203da0596bb9cb9 100644 --- a/addons/hr_timesheet/hr_timesheet_data.xml +++ b/addons/hr_timesheet/hr_timesheet_data.xml @@ -18,5 +18,10 @@ <field eval="False" name="purchase_ok"/> </record> + <record id="hr.employee" model="hr.employee"> + <field name="product_id" ref="product_consultant"/> + <field name="journal_id" ref="analytic_journal"/> + </record> + </data> </openerp> diff --git a/addons/hr_timesheet/hr_timesheet_view.xml b/addons/hr_timesheet/hr_timesheet_view.xml index d7700d16db30c347186c20a0c3530a42ccb81544..98c4413ade1bec0644c753c3dee13425d068cc12 100644 --- a/addons/hr_timesheet/hr_timesheet_view.xml +++ b/addons/hr_timesheet/hr_timesheet_view.xml @@ -69,9 +69,8 @@ <filter name="today" icon="terp-go-today" domain="[('date', '=', time.strftime('%%Y-%%m-%%d'))]" string="Today"/> <separator orientation="vertical"/> <field name="user_id"/> - <field name="account_id" select="1" widget="selection"/> - <field name="product_id" select="1"/> - <field name="date" select="1"/> + <field name="account_id"/> + <field name="date"/> </group> <newline/> <group expand="0" string="Group By..."> @@ -95,7 +94,7 @@ <field name="view_mode">tree,form</field> <field name="context">{"search_default_user_id":uid, "search_default_today":1}</field> <field name="search_view_id" ref="hr_timesheet_line_search"/> - <field name="help">This functionality gives you a list of work done by user, product and analytic account (or project). A search tool allows you to make fine-grained analysis.</field> + <field name="help">Working Hours allows you to log your working hours by project every day.</field> </record> <menuitem id="menu_project_working_hours" parent="base.menu_project_management_time_tracking" action="act_hr_timesheet_line_evry1_all_form"/> diff --git a/addons/hr_timesheet_invoice/hr_timesheet_invoice.py b/addons/hr_timesheet_invoice/hr_timesheet_invoice.py index f605fd760beab0a735210727e48946eb1af68a46..cc1ff3b93244984bc9541f7f85bd508cd83b20dd 100644 --- a/addons/hr_timesheet_invoice/hr_timesheet_invoice.py +++ b/addons/hr_timesheet_invoice/hr_timesheet_invoice.py @@ -27,8 +27,8 @@ class hr_timesheet_invoice_factor(osv.osv): _name = "hr_timesheet_invoice.factor" _description = "Invoice Rate" _columns = { - 'name': fields.char('Internal name', size=128, required=True), - 'customer_name': fields.char('Name', size=128, help="Name of the customer"), + 'name': fields.char('Internal name', size=128, required=True, translate=True), + 'customer_name': fields.char('Name', size=128, help="Label for the customer"), 'factor': fields.float('Discount (%)', required=True, help="Discount in percentage"), } _defaults = { @@ -45,7 +45,10 @@ class account_analytic_account(osv.osv): context = {} res = {} - cr.execute('select account_id as account_id, l.invoice_id from hr_analytic_timesheet h left join account_analytic_line l on (h.line_id=l.id)') + cr.execute('SELECT account_id as account_id, l.invoice_id ' + 'FROM hr_analytic_timesheet h LEFT JOIN account_analytic_line l ' + 'ON (h.line_id=l.id) ' + 'WHERE l.account_id = ANY(%s)', (ids,)) account_to_invoice_map = {} for rec in cr.dictfetchall(): account_to_invoice_map.setdefault(rec['account_id'], []).append(rec['invoice_id']) @@ -163,6 +166,7 @@ class account_invoice(osv.osv): obj_analytic_account = self.pool.get('account.analytic.account') for il in iml: if il['account_analytic_id']: + # *-* browse (or refactor to avoid read inside the loop) to_invoice = obj_analytic_account.read(cr, uid, [il['account_analytic_id']], ['to_invoice'])[0]['to_invoice'] if to_invoice: il['analytic_lines'][0][2]['to_invoice'] = to_invoice[0] diff --git a/addons/hr_timesheet_invoice/hr_timesheet_invoice_data.xml b/addons/hr_timesheet_invoice/hr_timesheet_invoice_data.xml index a81af0788b6a76edcf1c8a274c4416e13cf8d1b4..462888e0b392bc4ec395ac0327b8c46695b1912a 100644 --- a/addons/hr_timesheet_invoice/hr_timesheet_invoice_data.xml +++ b/addons/hr_timesheet_invoice/hr_timesheet_invoice_data.xml @@ -6,5 +6,15 @@ <field name="customer_name">100%</field> <field name="factor">0.0</field> </record> + <record id="timesheet_invoice_factor2" model="hr_timesheet_invoice.factor"> + <field name="name">90%</field> + <field name="customer_name">90%</field> + <field name="factor">10.0</field> + </record> + <record id="timesheet_invoice_factor3" model="hr_timesheet_invoice.factor"> + <field name="name">50%</field> + <field name="customer_name">50%</field> + <field name="factor">50.0</field> + </record> </data> </openerp> diff --git a/addons/hr_timesheet_invoice/hr_timesheet_invoice_view.xml b/addons/hr_timesheet_invoice/hr_timesheet_invoice_view.xml index 2caa7b15d77f7f9811b0d9f65b7c4c4a6cec0292..408835fe9930fcfa9117fe99544a32f1a6cab91c 100644 --- a/addons/hr_timesheet_invoice/hr_timesheet_invoice_view.xml +++ b/addons/hr_timesheet_invoice/hr_timesheet_invoice_view.xml @@ -118,7 +118,7 @@ <field name="view_mode">tree,form</field> <field name="domain">[]</field> <field name="context">{'search_default_to_invoice': 1}</field> - <field name="help">OpenERP automatically group the entries to be invoiced so you can keep an eye on them on real time in one glance.</field> + <field name="help">This lists show you every task work you can invoice to the customer. Select the lines in order to generate the invoices automatically.</field> </record> <menuitem action="action_hr_analytic_timesheet_open_tree" diff --git a/addons/hr_timesheet_sheet/wizard/hr_timesheet_current_view.xml b/addons/hr_timesheet_sheet/wizard/hr_timesheet_current_view.xml index f9944d0949ff10bdbdd203ae083fc0df0c60c1d7..fe63a4ce7b32078b5eb75be7d051d02bd99220b2 100644 --- a/addons/hr_timesheet_sheet/wizard/hr_timesheet_current_view.xml +++ b/addons/hr_timesheet_sheet/wizard/hr_timesheet_current_view.xml @@ -23,6 +23,7 @@ <field name="view_mode">tree,form</field> <field name="view_id" ref="view_hr_timesheet_current_open"/> <field name="target">new</field> + <field name="help">My Timesheet opens your timesheet so that you can book your activities into the system. From the same form, you can register your attendances (Sign In/Out) and describe the working hours made on the different projects. At the end of the period defined in the company, the timesheet is confirmed by the user and can be validated by his manager. If required, as defined on the project, you can generate the invoices based on the timesheet.</field> </record> <menuitem action="action_hr_timesheet_current_open" icon="STOCK_NEW" id="menu_act_hr_timesheet_sheet_form_my_current" name="My Timesheet" parent="hr_attendance.menu_hr_time_tracking" sequence="1"/> diff --git a/addons/lunch/lunch_demo.xml b/addons/lunch/lunch_demo.xml index 91be819d430f291068761ef8b65897af2c177559..30172b9e0a26831a71f842d05b09492863c97a0f 100644 --- a/addons/lunch/lunch_demo.xml +++ b/addons/lunch/lunch_demo.xml @@ -14,7 +14,7 @@ <record model="lunch.cashbox" id="cashbox_cashbox"> <field name="name">Cashbox</field> - <field name="manager" ref="base.user_admin"/> + <field name="manager" ref="base.user_root"/> </record> </data> </openerp> diff --git a/addons/lunch/report/order.rml b/addons/lunch/report/order.rml index 7a6dca6c2609b1a91373d6929bd5613d823e4deb..d47816abd9ca1039a2984926e3c16ab204581559 100644 --- a/addons/lunch/report/order.rml +++ b/addons/lunch/report/order.rml @@ -66,7 +66,6 @@ <images/> </stylesheet> <story> - <para style="terp_default_8">[[repeatIn(get_users(objects),'o')]]</para> <blockTable colWidths="293.0,235.0" style="Table1"> <tr> <td> @@ -75,16 +74,19 @@ </para> </td> <td> - <para style="terp_default_8">[[ (o.address_id and o.address_id.partner_id and o.address_id.partner_id.title and o.address_id.partner_id.title.name) or '' ]] [[ (o.address_id and o.address_id.partner_id and o.address_id.partner_id.name) or '' ]]</para> - <para style="terp_default_8">[[ (o.address_id and o.address_id.street) or '' ]]</para> - <para style="terp_default_8">[[ (o.address_id and o.address_id.street2) or removeParentNode('para') ]]</para> - <para style="terp_default_8">[[ (o.address_id and o.address_id.zip) or '' ]] [[ (o.address_id and o.user_id.address_id.city) or '' ]]</para> - <para style="terp_default_8">[[ (o.address_id and o.address_id.state_id and o.address_id.state_id.name) or removeParentNode('para')]]</para> - <para style="terp_default_8">[[ (o.address_id and o.address_id.country_id and o.address_id.country_id.name) or '' ]]</para> + <para style="terp_default_8">[[ (user.address_id and user.address_id.partner_id and user.address_id.partner_id.title and user.address_id.partner_id.title.name) or '' ]] [[ (user.address_id and user.address_id.partner_id and user.address_id.partner_id.name) or '' ]]</para> + <para style="terp_default_8">[[ (user.address_id and user.address_id.street) or '' ]]</para> + <para style="terp_default_8">[[ (user.address_id and user.address_id.street2) or removeParentNode('para') ]]</para> + <para style="terp_default_8">[[ (user.address_id and user.address_id.zip) or '' ]] [[ (user.address_id and user.address_id.city) or '' ]]</para> + <para style="terp_default_8">[[ (user.address_id and user.address_id.state_id and user.address_id.state_id.name) or removeParentNode('para')]]</para> + <para style="terp_default_8">[[ (user.address_id and user.address_id.country_id and user.address_id.country_id.name) or '' ]]</para> </td> </tr> </blockTable> <para style="terp_header">Lunch Order</para> + + <section> + <para style="terp_default_8">[[repeatIn(get_users(objects),'o')]]</para> <blockTable colWidths="80.0,70.0,141.0,172.0,65.0" style="Table2"> <tr> <td> @@ -144,5 +146,6 @@ <para style="terp_default_8"> <font color="white"> </font> </para> + </section> </story> -</document> \ No newline at end of file +</document> diff --git a/addons/marketing/marketing_view.xml b/addons/marketing/marketing_view.xml index 9edd7689484418d6fd32e6c856869cfc6e997c4c..69ee91d52dc417e6360fd7d74b5232af2ef97ba5 100644 --- a/addons/marketing/marketing_view.xml +++ b/addons/marketing/marketing_view.xml @@ -2,7 +2,7 @@ <openerp> <data> - <menuitem name="Marketing" icon="terp-crm" id="base.marketing_menu" sequence="17" groups="base.group_system,base.res_groups_email_template_admin"/> + <menuitem name="Marketing" icon="terp-crm" id="base.marketing_menu" sequence="17" groups="marketing.group_marketing_user"/> <record id="view_marketing_installer" model="ir.ui.view"> <field name="name">marketing.installer.view</field> diff --git a/addons/marketing/security/marketing_security.xml b/addons/marketing/security/marketing_security.xml index 2eda88c4481d8fee2006794b2de5d8cf4ee7e028..740b9b3a2c5f07247fca67f0cc0058200617d2b6 100644 --- a/addons/marketing/security/marketing_security.xml +++ b/addons/marketing/security/marketing_security.xml @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="utf-8"?> <openerp> <data> - <record id="base.res_groups_email_template_admin" model="res.groups"> + <record id="marketing.group_marketing_user" model="res.groups"> <field name="name">Marketing / User</field> </record> </data> diff --git a/addons/marketing_campaign/marketing_campaign_view.xml b/addons/marketing_campaign/marketing_campaign_view.xml index b23826969a8ad8a3e6022aebf0773284f4d88f3d..26690757234b009dc1618f6d2cf5dc4e94d929d6 100644 --- a/addons/marketing_campaign/marketing_campaign_view.xml +++ b/addons/marketing_campaign/marketing_campaign_view.xml @@ -115,9 +115,9 @@ <field name="view_type">form</field> <field name="view_mode">tree,form,diagram</field> <field name="view_id" ref="view_marketing_campaign_tree"/> - <field name="context">{'group_by': []}</field> - <field name="search_view_id" ref="view_marketing_campaign_search"/> - + <field name="context">{'group_by': []}</field> + <field name="search_view_id" ref="view_marketing_campaign_search"/> + <field name="help">Campaigns are used to tag the source of the new business opportunities or leads. They are mainly used for reporting on the performance of each marketing campaign.</field> </record> <menuitem name="Campaigns" id="menu_marketing_campaign" parent="base.marketing_menu"/> diff --git a/addons/marketing_campaign/security/ir.model.access.csv b/addons/marketing_campaign/security/ir.model.access.csv index ae5cad3d70635e7981dd868aee0fa5ca654b7c05..082cafd705404493598b40a0784bc64e0208968a 100644 --- a/addons/marketing_campaign/security/ir.model.access.csv +++ b/addons/marketing_campaign/security/ir.model.access.csv @@ -1,13 +1,13 @@ "id","name","model_id:id","group_id:id","perm_read","perm_write","perm_create","perm_unlink" -"access_marketing_campaign_admin","marketing.campaign","model_marketing_campaign","base.res_groups_email_template_admin",1,1,1,1 -"access_marketing_campaign_segment_campaignadmin","marketing.campaign.segment","model_marketing_campaign_segment","base.res_groups_email_template_admin",1,1,1,1 -"access_marketing_campaign_activity_campaignadmin","marketing.campaign.activity","model_marketing_campaign_activity","base.res_groups_email_template_admin",1,1,1,1 -"access_marketing_campaign_workitem_campaignadmin","marketing.campaign.workitem","model_marketing_campaign_workitem","base.res_groups_email_template_admin",1,1,1,1 -"access_marketing_campaign_transition_campaignadmin","marketing.campaign.transition","model_marketing_campaign_transition","base.res_groups_email_template_admin",1,1,1,1 -"access_marketing_campaign_analysis_campaignadmin","campaign.analysis","model_campaign_analysis","base.res_groups_email_template_admin",1,1,1,1 +"access_marketing_campaign_admin","marketing.campaign","model_marketing_campaign","marketing.group_marketing_user",1,1,1,1 +"access_marketing_campaign_segment_campaignadmin","marketing.campaign.segment","model_marketing_campaign_segment","marketing.group_marketing_user",1,1,1,1 +"access_marketing_campaign_activity_campaignadmin","marketing.campaign.activity","model_marketing_campaign_activity","marketing.group_marketing_user",1,1,1,1 +"access_marketing_campaign_workitem_campaignadmin","marketing.campaign.workitem","model_marketing_campaign_workitem","marketing.group_marketing_user",1,1,1,1 +"access_marketing_campaign_transition_campaignadmin","marketing.campaign.transition","model_marketing_campaign_transition","marketing.group_marketing_user",1,1,1,1 +"access_marketing_campaign_analysis_campaignadmin","campaign.analysis","model_campaign_analysis","marketing.group_marketing_user",1,1,1,1 "access_marketing_campaign_workitem_all","marketing.campaign.workitem","model_marketing_campaign_workitem","base.group_user",1,0,0,0 -"access_email_template_user","email.template","model_email_template","base.res_groups_email_template_admin",1,1,1,1 -"access_email_template_account_user","email_template.account.user","email_template.model_email_template_account","base.res_groups_email_template_admin",1,1,1,1 +"access_email_template_user","email.template","model_email_template","marketing.group_marketing_user",1,1,1,1 +"access_email_template_account_user","email_template.account.user","email_template.model_email_template_account","marketing.group_marketing_user",1,1,1,1 "access_marketing_campaign_system","marketing.campaign system","model_marketing_campaign","base.group_system",1,0,0,0 "access_marketing_campaign_segment_system","marketing.campaign.segment system","model_marketing_campaign_segment","base.group_system",1,0,0,0 "access_marketing_campaign_workitem_system","marketing.campaign.workitem system","model_marketing_campaign_workitem","base.group_system",1,0,0,0 diff --git a/addons/marketing_campaign/security/marketing_campaign_security.xml b/addons/marketing_campaign/security/marketing_campaign_security.xml index bb933fdcdc3477bda126e283d16548548a9febea..14710cf8f379cab147e014adafe9727fe7c859db 100644 --- a/addons/marketing_campaign/security/marketing_campaign_security.xml +++ b/addons/marketing_campaign/security/marketing_campaign_security.xml @@ -2,9 +2,5 @@ <openerp> <data> - <record id="base.res_groups_email_template_admin" model="res.groups"> - <field name="name">Marketing / User</field> - </record> - </data> </openerp> diff --git a/addons/mrp/board_manufacturing_view.xml b/addons/mrp/board_manufacturing_view.xml index c36ac668b4523890c283e6613739db20419258d3..a181e5ba41d1f178d2bcaecd80ba9088501958a3 100644 --- a/addons/mrp/board_manufacturing_view.xml +++ b/addons/mrp/board_manufacturing_view.xml @@ -42,8 +42,5 @@ id="menu_board_manufacturing" parent="menus_dash_mrp" sequence="1" groups="mrp.group_mrp_manager,mrp.group_mrp_user"/> - <menuitem icon="terp-mrp" id="base.menu_mrp_root" name="Manufacturing" - groups="group_mrp_user,group_mrp_manager,base.group_system" sequence="8" - action="open_board_manufacturing"/> </data> </openerp> diff --git a/addons/mrp/mrp.py b/addons/mrp/mrp.py index 5f2695cf3a70a91e9c410d706db1c0946eb8ce9c..50ed21eb298407235efe34de0300deebee5256a2 100644 --- a/addons/mrp/mrp.py +++ b/addons/mrp/mrp.py @@ -644,11 +644,7 @@ class mrp_production(osv.osv): move_obj.write(cr, uid, [production.move_prod_id.id], {'location_id': production.location_dest_id.id}) - message = ("Manufacturing Order '%s' for %s %s is Ready to produce.") % ( - name, - production.product_qty, - production.product_id.name, - ) + message = _("Manufacturing order '%s' is ready to produce.") % ( name,) self.log(cr, uid, production_id, message) return True @@ -759,9 +755,6 @@ class mrp_production(osv.osv): wf_service = netsvc.LocalService("workflow") wf_service.trg_validate(uid, 'mrp.production', production_id, 'button_produce_done', cr) - for (id, name) in self.pool.get('product.product').name_get(cr, uid, [production.product_id.id]): - message = str(production_qty) + ' ' + production.product_uom.name +" '" + name + _("' have been manufactured for ") + production.name - self.log(cr, uid, production_id, message) return True def _costs_generate(self, cr, uid, production): @@ -929,16 +922,10 @@ class mrp_production(osv.osv): proc_ids.append(proc_id) wf_service.trg_validate(uid, 'stock.picking', picking_id, 'button_confirm', cr) self.write(cr, uid, [production.id], {'picking_id': picking_id, 'move_lines': [(6,0,moves)], 'state':'confirmed'}) - message = ("%s '%s' %s %s %s %s %s %s.") % ( - _('Manufacturing Order'), - production.name, - _('for'), - production.product_qty, - production.product_id.name, - _('scheduled for date '), - datetime.strptime(production.date_planned,'%Y-%m-%d %H:%M:%S').strftime('%Y-%m-%d'), - _('is waiting') - ) + message = _("Manufacturing order '%s' is scheduled for the %s.") % ( + production.name, + datetime.strptime(production.date_planned,'%Y-%m-%d %H:%M:%S').strftime('%m/%d/%Y'), + ) self.log(cr, uid, production.id, message) return picking_id diff --git a/addons/mrp/mrp_view.xml b/addons/mrp/mrp_view.xml index 32f3100b8689b64eb90925348f4d2e49bd9a287a..c946777b219fe8a634a89696bb5fa12393349850 100644 --- a/addons/mrp/mrp_view.xml +++ b/addons/mrp/mrp_view.xml @@ -3,7 +3,7 @@ <data> <menuitem icon="terp-mrp" id="base.menu_mrp_root" parent="" name="Manufacturing" - groups="group_mrp_user,group_mrp_manager,base.group_system" sequence="8"/> + groups="group_mrp_user,group_mrp_manager" sequence="8"/> <menuitem id="menu_mrp_manufacturing" name="Manufacturing" parent="base.menu_mrp_root" sequence="1"/> @@ -11,7 +11,7 @@ <menuitem name="Master Data" id="menu_mrp_bom" parent="base.menu_mrp_root" - groups="mrp.group_mrp_manager,base.group_system" + groups="mrp.group_mrp_manager" sequence="5" /> <!-- @@ -37,12 +37,13 @@ <field name="res_model">mrp.property.group</field> <field name="view_type">form</field> <field name="view_mode">tree,form</field> + <field name="help">Define specific property groups that can be assigned to the properties of your bills of materials.</field> </record> <menuitem id="menu_mrp_configuration" name="Configuration" parent="base.menu_mrp_root" - groups="base.group_system" + groups="base.group_extended" sequence="50" /> <record id="mrp_property_tree_view" model="ir.ui.view"> @@ -99,6 +100,7 @@ <field name="view_type">form</field> <field name="view_mode">tree,form</field> <field name="search_view_id" ref="view_mrp_property_search"/> + <field name="help">The Properties in OpenERP are used to select the right bill of material in order to manufacture 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 select automatically the BoM to use according the the needs.</field> </record> <menuitem name="Master Bill of Materials" id="menu_mrp_property" @@ -109,11 +111,10 @@ action="mrp_property_action" id="menu_mrp_property_action" parent="menu_mrp_property" - groups="base.group_extended,base.group_system" /> + groups="base.group_extended" /> <menuitem action="mrp_property_group_action" id="menu_mrp_property_group_action" - groups="base.group_system" parent="menu_mrp_property"/> <!-- @@ -184,9 +185,9 @@ <field name="arch" type="xml"> <search string="Search for mrp workcenter"> <group col='15' colspan='4'> - <field name="code"/> - <field name="name"/> - <field name="resource_type"/> + <field name="code"/> + <field name="name"/> + <field name="resource_type"/> </group> <newline/> <group expand="0" string="Group By..." colspan="4" col="20" groups="base.group_extended"> @@ -207,7 +208,7 @@ <field name="view_type">form</field> <field name="view_id" ref="mrp_workcenter_tree_view"/> <field name="search_view_id" ref="view_mrp_workcenter_search"/> - <field name="help">Work Centers are units of manufacture consisting of one or several people and/or machines that can be considered as a unit for the purposes of forecasting capacity and planning.</field> + <field name="help">Work Centers allows you to create and manage manufacturing units consisting of one or several people and/or machines that can be considered as a unit for capacity and planning forecasting.</field> </record> <!-- @@ -257,10 +258,10 @@ <field name="location_id"/> <field name="active" groups="base.group_extended"/> <notebook colspan="4"> - <page string="Work Center Operations"> - <field colspan="4" name="workcenter_lines" nolabel="1" widget="one2many_list"/> - </page> - <page string="Notes"> + <page string="Work Center Operations"> + <field colspan="4" name="workcenter_lines" nolabel="1" widget="one2many_list"/> + </page> + <page string="Notes"> <field colspan="4" name="note" nolabel="1"/> </page> </notebook> @@ -298,7 +299,7 @@ <field name="view_type">form</field> <field name="view_id" ref="mrp_routing_tree_view"/> <field name="search_view_id" ref="mrp_routing_search_view"/> - <field name="help">Routings define the assembly operations to be done in work centers for manufacturing a certain product. They are usually attached to bills of materials which will define the assembly of products required for manufacture or for finished products.</field> + <field name="help">Routings allows 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.</field> </record> <menuitem action="mrp_workcenter_action" id="menu_mrp_workcenter_action" parent="mrp.menu_mrp_property" groups="base.group_extended" sequence="40" /> <menuitem action="mrp_routing_action" id="menu_mrp_routing_action" parent="mrp.menu_mrp_property" groups="base.group_extended" sequence="30"/> @@ -415,7 +416,7 @@ <field name="view_type">form</field> <field name="domain">[('bom_id','=',False)]</field> <field name="search_view_id" ref="view_mrp_bom_filter"/> - <field name="help">Master Bills of Materials are documents that describe the list of raw materials used to make a finished product. You can generate documents for a product manufacturing (defining each manufacturing step) or you could define a single multi-level bill of materials.</field> + <field name="help">Master Bill of Materials allows you to create and manage the list of necessary raw materials used to make a finished product. OpenERP will use these BoM in order to propose automatically manufacturing orders according to products' needs. You can either create a bill of materials to define specific production steps or define a single multi-level bill of materials.</field> </record> <record id="mrp_bom_form_action2" model="ir.actions.act_window"> <field name="name">Bill of Material Components</field> @@ -423,7 +424,7 @@ <field name="res_model">mrp.bom</field> <field name="view_type">form</field> <field name="domain">[('bom_id','!=',False)]</field> - <field name="help">Bills of materials Components are components and sub-product used to create master bills of materials.</field> + <field name="help">Bills of materials Components are components and sub-products used to create master bills of materials. Use this menu to search in which BoM is used a specific component.</field> </record> <!-- BOM menus --> @@ -432,7 +433,7 @@ action="mrp_bom_form_action" id="menu_mrp_bom_form_action" parent="menu_mrp_bom" - groups="mrp.group_mrp_user,mrp.group_mrp_manager,base.group_system" + groups="mrp.group_mrp_user,mrp.group_mrp_manager" sequence="10"/> <menuitem action="mrp_bom_form_action2" @@ -757,9 +758,9 @@ <field name="view_id" eval="False"/> <field name="search_view_id" ref="view_mrp_production_filter"/> <field name="context">{'search_default_Current':1}</field> - <field name="help">Manufacturing Orders describe the operations that need to be carried out and the raw materials usage for each stage of production. You use specifications (bills of materials) 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 becomes capable of automatically deciding on the manufacturing route depending on the needs of the company.</field> + <field name="help">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 consumation of the raw materials (stock decrease) and the production of the finished products (stock increase) when the order is processed.</field> </record> - <menuitem action="mrp_production_action" id="menu_mrp_production_action" parent="menu_mrp_manufacturing" groups="base.group_system,mrp.group_mrp_user,mrp.group_mrp_manager" sequence="1"/> + <menuitem action="mrp_production_action" id="menu_mrp_production_action" parent="menu_mrp_manufacturing" groups="mrp.group_mrp_user,mrp.group_mrp_manager" sequence="1"/> <record id="mrp_production_action_planning" model="ir.actions.act_window"> <field name="name">Manufacturing Orders Planning</field> @@ -882,10 +883,10 @@ <field name="bom_id" domain="[('product_id','=',product_id),('bom_id','=',False)]"/> </xpath> <xpath expr="/form/notebook/page/field[@name='close_move']" position="after"> - <group colspan="4" groups="base.group_extended"> - <separator colspan="4" string="Properties" /> - <field colspan="4" name="property_ids" nolabel="1"/> - </group> + <group colspan="4" groups="base.group_extended"> + <separator colspan="4" string="Properties" /> + <field colspan="4" name="property_ids" nolabel="1"/> + </group> </xpath> </data> </field> diff --git a/addons/mrp/procurement.py b/addons/mrp/procurement.py index 29eb2d3bddf8f3d32765a4a2dbf3c8f67106dedf..9af65a473a30de5472db4e797e97567a3129d76c 100644 --- a/addons/mrp/procurement.py +++ b/addons/mrp/procurement.py @@ -40,10 +40,10 @@ class procurement_order(osv.osv): """ properties = [x.id for x in procurement.property_ids] bom_id = self.pool.get('mrp.bom')._bom_find(cr, uid, procurement.product_id.id, procurement.product_uom.id, properties) - if not bom_id: + if not bom_id: cr.execute('update procurement_order set message=%s where id=%s', (_('No BoM defined for this product !'), procurement.id)) for (id, name) in self.name_get(cr, uid, procurement.id): - message = _('Procurement ') + " '" + name + "' "+ _("has an exception.") + _('No BoM defined for this product !') + message = _("Procurement '%s' has an exception: 'No BoM defined for this product !'") % name self.log(cr, uid, id, message) return False return True diff --git a/addons/mrp/report/mrp_production_order_view.xml b/addons/mrp/report/mrp_production_order_view.xml index 01b3381b0bbd794cb7a243b759b218b05b3439be..61a0c641a241a4907d68e2325c3ad4274afdb8e0 100644 --- a/addons/mrp/report/mrp_production_order_view.xml +++ b/addons/mrp/report/mrp_production_order_view.xml @@ -111,6 +111,7 @@ <field name="view_id" ref="view_report_mrp_production_order_tree"/> <field name="search_view_id" ref="view_report_mrp_production_order_filter"/> <field name="context">{'search_default_Product': 1,'search_default_month':1,'group_by_no_leaf':1,'group_by':[]}</field> + <field name="help">This reporting allows you to analyse your manufacturing activities and performance.</field> </record> <record model="ir.actions.act_window.view" id="action_report_mrp_production_order_tree"> diff --git a/addons/mrp/report/mrp_report_view.xml b/addons/mrp/report/mrp_report_view.xml index dcb2bcb356624139def82a97a33da749f3ea8f39..db628eb5431c7c782a61a390f7f1b2175c56628f 100644 --- a/addons/mrp/report/mrp_report_view.xml +++ b/addons/mrp/report/mrp_report_view.xml @@ -47,7 +47,7 @@ <field name="view_type">form</field> <field name="view_mode">graph,tree</field> <field name="search_view_id" ref="view_workcenter_load_search"/> - <field name="help">Work Center Load is a projection of load in a work center given a period. The load is express in hour and cycle (for machines).</field> + <field name="help">Work Center Loads gives you a projection of work center loads over a specified period. It is expressed in number of hours and machine related cycles.</field> </record> <menuitem id="next_id_77" name="Reporting" parent="base.menu_mrp_root" sequence="49"/> @@ -99,7 +99,7 @@ <field name="res_model">report.mrp.inout</field> <field name="view_type">form</field> <field name="view_mode">graph,tree</field> - <field name="help">Weekly Stock Value Variation enables you to track stock value evolution as a result of manufacturing activities (consumption of raw materials, production of finished goods, added accounting value of stock by the creation of value following the transformation of products).</field> + <field name="help">Weekly Stock Value Variation enables you to track the stock value evolution linked to manufacturing activities, receptions of products and delivery orders.</field> </record> <menuitem action="action_report_in_out_picking_tree" id="menu_report_in_out_picking" parent="next_id_77" groups="mrp.group_mrp_manager"/> diff --git a/addons/mrp/security/ir.model.access.csv b/addons/mrp/security/ir.model.access.csv index e63ced1499705bafa4b7e9c04424e0f30283928e..586f82f1b53a100e1a6922a82fd18d13c03d6493 100644 --- a/addons/mrp/security/ir.model.access.csv +++ b/addons/mrp/security/ir.model.access.csv @@ -62,33 +62,6 @@ "access_stock_move_mrp_manager","stock.move mrp_manager","stock.model_stock_move","mrp.group_mrp_manager",1,0,0,1 "access_mrp_production_product_line_manager","mrp.production.product.line manager","model_mrp_production_product_line","mrp.group_mrp_manager",1,0,0,0 "access_account_sequence_fiscalyear_system","account.sequence.fiscalyear.system","account.model_account_sequence_fiscalyear","mrp.group_mrp_manager",1,0,0,0 -"access_product_template_system","product.template mgr.system","product.model_product_template","base.group_system",1,0,0,0 -"access_product_uom_system","product.uom user.system","product.model_product_uom","base.group_system",1,0,0,0 -"access_product_supplierinfo_system","product.supplierinfo system","product.model_product_supplierinfo","base.group_system",1,0,0,0 -"access_res_partner_address_system","res.partner.address.system","base.model_res_partner_address","base.group_system",1,0,0,0 -"access_stock_tracking_system","stock.tracking.system","stock.model_stock_tracking","base.group_system",1,0,0,0 -"access_res_partner_system","res.partner.system","base.model_res_partner","base.group_system",1,0,0,0 -"access_product_puom_categ_system","product.uom.categ.system","product.model_product_uom_categ","base.group_system",1,0,0,0 -"access_resource_resource_system","resource.resource.system","resource.model_resource_resource","base.group_system",1,0,0,0 -"access_board_board_system","mrp.board.board.system","board.model_board_board","base.group_system",1,0,0,0 -"access_mrp_production_system","mrp.production.system","model_mrp_production","base.group_system",1,0,0,0 -"access_procurement_system","procurement.order.system","model_procurement_order","base.group_system",1,0,0,0 -"access_workcenter_system","mrp.production.workcenter.line.system","model_mrp_production_workcenter_line","base.group_system",1,0,0,0 -"access_stock_move_mrp_system","stock.move mrp_manager.system","stock.model_stock_move","base.group_system",1,0,0,0 -"access_mrp_production_product_line_system","mrp.production.product.line manager.system","model_mrp_production_product_line","base.group_system",1,0,0,0 -"access_mrp_production_order_system","mrp.production.order.system","model_mrp_production_order","base.group_system",1,0,0,0 -"access_report_workcenter_load_system","report.workcenter.load.system","model_report_workcenter_load","base.group_system",1,0,0,0 -"access_report_mrp_inout_system","report.mrp.inout.system","model_report_mrp_inout","base.group_system",1,0,0,0 -"access_product_product_system","product.product system","model_product_product","base.group_system",1,0,0,0 -"access_mrp_routing_system","mrp.routing.system","model_mrp_routing","base.group_system",1,0,0,0 -"access_mrp_routing_workcenter_system","mrp.routing.workcenter.system","model_mrp_routing_workcenter","base.group_system",1,0,0,0 -"access_mrp_bom_system","mrp.bom.system","model_mrp_bom","base.group_system",1,0,0,0 -"access_mrp_bom_revision_system","mrp.bom.revision.system","model_mrp_bom_revision","base.group_system",1,0,0,0 -"access_mrp_property_system","mrp.property.system","procurement.model_mrp_property","base.group_system",1,1,1,1 -"access_mrp_property_group_system","mrp.property.group.system","procurement.model_mrp_property_group","base.group_system",1,1,1,1 -"access_mrp_routing_system","mrp.routing.system","model_mrp_routing","base.group_system",1,1,1,1 -"access_mrp_workcenter_system","mrp.workcenter.system","model_mrp_workcenter","base.group_system",1,0,0,0 -"access_mrp_production_system","mrp.production system","model_mrp_production","base.group_system",1,0,0,0 "access_stock_production_lot_user","stock.production.lot","stock.model_stock_production_lot","mrp.group_mrp_user",1,1,1,1 "access_stock_warehouse_orderpoint_manager","stock.warehouse.orderpoint","procurement.model_stock_warehouse_orderpoint","mrp.group_mrp_manager",1,0,0,0 "access_stock_picking_mrp_manager","stock.picking mrp_manager","stock.model_stock_picking","mrp.group_mrp_manager",1,0,0,0 diff --git a/addons/mrp_operations/i18n/sr.po b/addons/mrp_operations/i18n/sr.po index fa858dff0250e914b41298378cc1781873f5ac85..bf173288c9d6320c8b31ced929f6c1bf27426bd3 100644 --- a/addons/mrp_operations/i18n/sr.po +++ b/addons/mrp_operations/i18n/sr.po @@ -8,13 +8,13 @@ msgstr "" "Project-Id-Version: openobject-addons\n" "Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n" "POT-Creation-Date: 2009-08-28 16:01+0000\n" -"PO-Revision-Date: 2010-10-15 10:57+0000\n" -"Last-Translator: zmmaj <Unknown>\n" +"PO-Revision-Date: 2010-10-16 09:44+0000\n" +"Last-Translator: OpenERP Administrators <Unknown>\n" "Language-Team: Serbian <sr@li.org>\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2010-10-16 04:48+0000\n" +"X-Launchpad-Export-Date: 2010-10-17 04:53+0000\n" "X-Generator: Launchpad (build Unknown)\n" #. module: mrp_operations diff --git a/addons/mrp_operations/mrp_operations_view.xml b/addons/mrp_operations/mrp_operations_view.xml index 62298f4aa5fc594027372cef0c9cc449d5a15630..cd208b2d5a63ba767ccde3691e8faa16fbde8998 100644 --- a/addons/mrp_operations/mrp_operations_view.xml +++ b/addons/mrp_operations/mrp_operations_view.xml @@ -202,7 +202,7 @@ <field name="view_type">form</field> <field name="view_mode">tree,form,gantt,calendar,graph</field> <field name="search_view_id" ref="view_mrp_production_workcenter_form_view_filter"/> - <field name="help">Work Orders are manufacturing operations required to produce or assemble products. The different work orders will have different impacts on the costs of manufacture and planning depending on the available workload.</field> + <field name="help">Work Orders is the list of operations to be performed for each manufacturing order. Once you start the first work order of a manufacturing order, the manufacturing order is automatically marked as started. Once you finish the latest operation of a manufacturing order, the MO is automatically done and the related products are produced.</field> </record> <record model="ir.actions.act_window" id="mrp_production_wc_action_planning"> diff --git a/addons/mrp_repair/i18n/sr.po b/addons/mrp_repair/i18n/sr.po index 7986e0b074f7969be67c6bd5b273e61eac21917b..743247668bca46846fd17b137ac0b80b0aa1e519 100644 --- a/addons/mrp_repair/i18n/sr.po +++ b/addons/mrp_repair/i18n/sr.po @@ -8,13 +8,13 @@ msgstr "" "Project-Id-Version: openobject-addons\n" "Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n" "POT-Creation-Date: 2009-08-28 16:01+0000\n" -"PO-Revision-Date: 2010-10-15 10:31+0000\n" -"Last-Translator: zmmaj <Unknown>\n" +"PO-Revision-Date: 2010-10-16 08:53+0000\n" +"Last-Translator: OpenERP Administrators <Unknown>\n" "Language-Team: Serbian <sr@li.org>\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2010-10-16 04:48+0000\n" +"X-Launchpad-Export-Date: 2010-10-17 04:53+0000\n" "X-Generator: Launchpad (build Unknown)\n" #. module: mrp_repair diff --git a/addons/mrp_repair/mrp_repair_view.xml b/addons/mrp_repair/mrp_repair_view.xml index 15878ec1b37ae1a707d45ad71986b213dbb72958..756fa94568a47606e04dcee8431f3f33225b2da4 100644 --- a/addons/mrp_repair/mrp_repair_view.xml +++ b/addons/mrp_repair/mrp_repair_view.xml @@ -211,6 +211,7 @@ <field name="view_type">form</field> <field name="view_mode">tree,form</field> <field name="search_view_id" ref="view_repair_order_form_filter"/> + <field name="help">Repair orders allows you to organize your reparations on the products. On a repair order, you can detail the components you remove, add or replace and record the time you spent on the different operations. The repair order uses the warranty date on the production lot in order to know if you have to invoice the reparation to the customer or not.</field> </record> <menuitem action="action_repair_order_tree" id="menu_repair_order" parent="mrp.menu_mrp_manufacturing" groups="mrp.group_mrp_user" name="Repair Orders" sequence="50"/> diff --git a/addons/mrp_subproduct/i18n/sr.po b/addons/mrp_subproduct/i18n/sr.po index 57cb0e7ab919042e12cdc292b1bfb464e569a243..a0427bb335692832113483ec9c8bdfacb68b0c77 100644 --- a/addons/mrp_subproduct/i18n/sr.po +++ b/addons/mrp_subproduct/i18n/sr.po @@ -8,13 +8,13 @@ msgstr "" "Project-Id-Version: openobject-addons\n" "Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n" "POT-Creation-Date: 2009-08-28 16:01+0000\n" -"PO-Revision-Date: 2010-10-15 10:26+0000\n" -"Last-Translator: zmmaj <Unknown>\n" +"PO-Revision-Date: 2010-10-16 09:18+0000\n" +"Last-Translator: OpenERP Administrators <Unknown>\n" "Language-Team: Serbian <sr@li.org>\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2010-10-16 04:48+0000\n" +"X-Launchpad-Export-Date: 2010-10-17 04:53+0000\n" "X-Generator: Launchpad (build Unknown)\n" #. module: mrp_subproduct diff --git a/addons/mrp_subproduct/security/ir.model.access.csv b/addons/mrp_subproduct/security/ir.model.access.csv index cd093fa6ff1a580cd1e916335d2ffc75fef5ed63..307827265f2778458d364591a64fb1b989049c17 100644 --- a/addons/mrp_subproduct/security/ir.model.access.csv +++ b/addons/mrp_subproduct/security/ir.model.access.csv @@ -1,4 +1,3 @@ "id","name","model_id:id","group_id:id","perm_read","perm_write","perm_create","perm_unlink" "access_mrp_subproduct_user","mrp.subproduct","model_mrp_subproduct","mrp.group_mrp_user",1,1,1,1 "access_mrp_subproduct_manager","mrp.subproduct manager","model_mrp_subproduct","mrp.group_mrp_manager",1,0,0,0 -"access_mrp_subproduct_system","mrp.subproduct system","model_mrp_subproduct","base.group_system",1,0,0,0 diff --git a/addons/outlook/plugin/openerp-outlook-plugin/tiny_xmlrpc.py b/addons/outlook/plugin/openerp-outlook-plugin/tiny_xmlrpc.py index af2c5afd35c53166d490ff4739942085b0037383..d520283bd2dc88c783a847b211ba3b99f1e9fe8e 100755 --- a/addons/outlook/plugin/openerp-outlook-plugin/tiny_xmlrpc.py +++ b/addons/outlook/plugin/openerp-outlook-plugin/tiny_xmlrpc.py @@ -43,7 +43,7 @@ def execute(connector, method, *args): if e.args[0] == 111: if wait_count > wait_limit: print "Server is taking too long to start, it has exceeded the maximum limit of %d seconds."%(wait_limit) - clean() + # clean() Commented... sys.exit(1) print 'Please wait %d sec to start server....'%(waittime) wait_count += 1 diff --git a/addons/point_of_sale/pos_view.xml b/addons/point_of_sale/pos_view.xml index 7453682f56685b3319e749bc74bc7e942c2df518..4d277d216c8fa509ac4ad896ff47beba7df5c797 100644 --- a/addons/point_of_sale/pos_view.xml +++ b/addons/point_of_sale/pos_view.xml @@ -3,7 +3,7 @@ <data> <menuitem name="Point of Sale" id="menu_point_root" sequence="21" icon="terp-partner" - groups="group_pos_manager,group_pos_user,base.group_system"/> + groups="group_pos_manager,group_pos_user"/> <record model="ir.ui.view" id="view_pos_pos_form"> <field name="name">pos.order</field> @@ -150,7 +150,7 @@ </record> <menuitem name="Daily Operations" id="menu_point_of_sale" parent="menu_point_root" sequence="1" /> - <menuitem name="Sales Order" parent="menu_point_of_sale" id="menu_point_ofsale" action="action_pos_pos_form" sequence="1" groups="group_pos_manager,group_pos_user,base.group_system"/> + <menuitem name="Sales Order" parent="menu_point_of_sale" id="menu_point_ofsale" action="action_pos_pos_form" sequence="1" groups="group_pos_manager,group_pos_user"/> <menuitem name="Products" id="menu_point_of_sale_product" parent="menu_point_root" sequence="15" /> <menuitem action="product.product_normal_action" id="menu_pos_products" parent="menu_point_of_sale_product" sequence="2" name="Products"/> @@ -697,7 +697,7 @@ <group colspan="2" col="2" name="Prices"> <separator string="Prices" colspan="2"/> <field name="lst_price"/> - <field name="standard_price"/> + <field name="standard_price"/> </group> </page> </notebook> @@ -706,7 +706,7 @@ </record> <menuitem name="Configuration" parent="menu_point_root" - id="menu_point_config_product" sequence="25" groups="base.group_system,group_pos_manager"/> + id="menu_point_config_product" sequence="25" groups="group_pos_manager"/> <record model="ir.actions.act_window" id="action_product_input"> <field name="name">Products</field> @@ -732,7 +732,7 @@ parent="menu_point_config_product" action="action_product_input" id="products_for_input_operations" - groups="base.group_system,group_pos_manager"/> + groups="group_pos_manager"/> <record model="ir.actions.act_window" id="action_product_output"> <field name="name">Products</field> @@ -758,7 +758,7 @@ parent="menu_point_config_product" action="action_product_output" id="products_for_output_operations" - groups="base.group_system,group_pos_manager"/> + groups="group_pos_manager"/> <menuitem name="Input Operations" parent="menu_point_of_sale" @@ -796,7 +796,7 @@ </record> <!-- Miscelleanous Operations/Reporting --> - <menuitem name="Reporting" parent="menu_point_root" id="menu_point_rep" sequence="20" groups="group_pos_manager,base.group_system"/> + <menuitem name="Reporting" parent="menu_point_root" id="menu_point_rep" sequence="20" groups="group_pos_manager"/> <!-- Invoice --> <record model="ir.actions.act_window" id="action_pos_invoice"> diff --git a/addons/point_of_sale/security/ir.model.access.csv b/addons/point_of_sale/security/ir.model.access.csv index 70a98128c2a8151cdf14eeac9a4ef76a057e5bc2..db62c9c8361ece7c826027adb54e2699592d913b 100644 --- a/addons/point_of_sale/security/ir.model.access.csv +++ b/addons/point_of_sale/security/ir.model.access.csv @@ -21,11 +21,9 @@ "access_report_sales_by_margin_pos","report.sales.by.margin.pos","model_report_sales_by_margin_pos","group_pos_user",1,0,0,0 "access_report_sales_by_margin_pos_month","report.sales.by.margin.pos.month","model_report_sales_by_margin_pos_month","group_pos_user",1,0,0,0 "access_report_pos_order","report.pos.order","model_report_pos_order","group_pos_user",1,1,1,1 -"access_report_pos_order_system","report.pos.order.system","model_report_pos_order","base.group_system",1,1,1,1 "access_report_pos_order","report.pos.order","model_report_pos_order","group_pos_manager",1,1,1,1 "access_account_bank_statement","account.bank.statement","account.model_account_bank_statement","group_pos_user",1,1,1,0 "access_account_bank_statement_manager","account.bank.statement manager","account.model_account_bank_statement","group_pos_manager",1,1,1,1 -"access_account_bank_statement_system","account.bank.statement system","account.model_account_bank_statement","base.group_system",1,0,0,0 "access_account_bank_statement_line","account.bank.statement.line","account.model_account_bank_statement_line","group_pos_user",1,1,1,0 "access_account_invoice_pos","account.invoice pos user","account.model_account_invoice","group_pos_user",1,1,1,0 "access_account_invoice_pos_manager","account.invoice pos manager","account.model_account_invoice","group_pos_manager",1,0,0,0 @@ -35,10 +33,8 @@ "access_account_invoice_tax_pos_manager","account.invoice.tax pos manager","account.model_account_invoice_tax","group_pos_manager",1,0,0,0 "access_account_period_pos","account.period pos user","account.model_account_period","group_pos_user",1,1,1,0 "access_account_period_pos_manager","account.period pos manager","account.model_account_period","group_pos_manager",1,0,0,0 -"access_account_period_pos_system","account.period pos system","account.model_account_period","base.group_system",1,0,0,0 "access_account_fiscalyear_pos_user","account.fiscalyear user","account.model_account_fiscalyear","group_pos_user",1,1,1,0 "access_account_fiscalyear_pos_manager","account.fiscalyear manager","account.model_account_fiscalyear","group_pos_manager",1,0,0,0 -"access_account_fiscalyear_pos_system","account.fiscalyear user","account.model_account_fiscalyear","base.group_system",1,0,0,0 "access_account_cashbox_line","account.cashbox.line","account.model_account_cashbox_line","group_pos_user",1,1,1,0 "access_account_cashbox_line_manager","account.cashbox.line manager","account.model_account_cashbox_line","group_pos_manager",1,1,1,1 "access_product_product","product.product","product.model_product_product","group_pos_user",1,0,0,0 @@ -50,31 +46,20 @@ "access_account_move","account.move","account.model_account_move","group_pos_manager",1,0,0,0 "access_account_journal","account.journal","account.model_account_journal","group_pos_user",1,1,1,0 "access_account_journal_manager","account.journal manager","account.model_account_journal","group_pos_manager",1,0,0,0 -"access_account_journal_system","account.journal system","account.model_account_journal","base.group_system",1,0,0,0 "access_account_journal_period_user","account.journal.period user","account.model_account_journal_period","group_pos_user",1,1,1,1 "access_account_journal_period_manager","account.journal.period manager","account.model_account_journal_period","group_pos_manager",1,0,0,0 "access_account_journal_view","account.journal.view","account.model_account_journal_view","group_pos_user",1,1,1,0 "access_account_journal_view_manager","account.journal.view manager","account.model_account_journal_view","group_pos_manager",1,0,0,0 -"access_account_journal_view_system","account.journal.view system","account.model_account_journal_view","base.group_system",1,0,0,0 "access_account_analytic_line","account.analytic.line","analytic.model_account_analytic_line","group_pos_user",1,1,1,0 "access_account_analytic_account","account.analytic.account","analytic.model_account_analytic_account","group_pos_user",1,1,1,0 "access_account_journal_column","account.journal.column","account.model_account_journal_column","group_pos_user",1,1,1,0 "access_account_journal_column_manager","account.journal.column manager","account.model_account_journal_column","group_pos_manager",1,0,0,0 -"access_account_journal_column_system","account.journal.column system","account.model_account_journal_column","base.group_system",1,0,0,0 "access_report_check_register","report.cash.register","model_report_cash_register","group_pos_manager",1,1,1,1 -"access_product_product_pos","product.product.pos","product.model_product_product","base.group_system",1,0,0,0 -"access_product_template_pos","product.template pos","product.model_product_template","base.group_system",1,1,1,1 "access_ir_property_pos_manager","ir.property manager","base.model_ir_property","group_pos_manager",1,1,1,1 -"access_pos_order_system","pos.order system","model_pos_order","base.group_system",1,0,0,0 -"access_pos_order_line_system","pos.order.line system","model_pos_order_line","base.group_system",1,0,0,0 "access_account_bank_statement_line_manager","account.bank.statement.line manager","account.model_account_bank_statement_line","group_pos_manager",1,1,1,1 "access_account_invoice_manager","account.invoice manager","account.model_account_invoice","group_pos_manager",1,1,1,1 -"access_report_transaction_pos_system","report.transaction.pos system","model_report_transaction_pos","base.group_system",1,1,1,1 -"access_account_bank_statement_line_system","account.bank.statement.line system","account.model_account_bank_statement_line","base.group_system",1,0,0,0 -"access_product_product_supplierinfo","product.supplierinfo system","product.model_product_supplierinfo","base.group_system",1,0,0,0 "access_product_product_supplierinfo_manager","product.supplierinfo manager","product.model_product_supplierinfo","group_pos_manager",1,0,0,0 "access_product_product_supplierinfo_user","product.supplierinfo user","product.model_product_supplierinfo","group_pos_user",1,0,0,0 -"access_product_product_packaging_system","product.packaging system","product.model_product_packaging","base.group_system",1,0,0,0 "access_product_product_packaging_user","product.packaging user","product.model_product_packaging","group_pos_user",1,0,0,0 "access_product_product_packaging_manager","product.packaging manager","product.model_product_packaging","group_pos_manager",1,0,0,0 "access_account_sequence_fiscalyear_manager","account.sequence.fiscalyear manager","account.model_account_sequence_fiscalyear","group_pos_manager",1,0,0,0 diff --git a/addons/process/process.py b/addons/process/process.py index 479b8748ff30cc7cc02545e0967ef8ca022769fd..544ff73e761a3b8622e68a0c31725845c91926d1 100644 --- a/addons/process/process.py +++ b/addons/process/process.py @@ -30,16 +30,12 @@ class Env(dict): self.__usr = user def __getitem__(self, name): - if name in ('__obj', '__user'): - return super(ExprContext, self).__getitem__(name) - + return super(Env, self).__getitem__(name) if name == 'user': return self.__user - if name == 'object': return self.__obj - return self.__obj[name] class process_process(osv.osv): diff --git a/addons/process/security/ir.model.access.csv b/addons/process/security/ir.model.access.csv index 064f0454d022ab2901a1d20a8c6772d078f5e4a9..7356880f47a55eaac994dbf13f99d303092c6c6c 100644 --- a/addons/process/security/ir.model.access.csv +++ b/addons/process/security/ir.model.access.csv @@ -4,8 +4,3 @@ "access_process_transition","process.transition","model_process_transition","base.group_user",1,0,0,0 "access_process_transition_action","process.transition.action","model_process_transition_action","base.group_user",1,0,0,0 "access_process_condition","process.condition","model_process_condition","base.group_user",1,0,0,0 -"access_process_process_manager","process.process manager","model_process_process","base.group_system",1,1,1,1 -"access_process_node_manager","process.node manager","model_process_node","base.group_system",1,1,1,1 -"access_process_transition_manager","process.transition manager","model_process_transition","base.group_system",1,1,1,1 -"access_process_transition_action_manager","process.transition.action manager","model_process_transition_action","base.group_system",1,1,1,1 -"access_process_condition_manager","process.condition manager","model_process_condition","base.group_system",1,1,1,1 diff --git a/addons/procurement/procurement.py b/addons/procurement/procurement.py index 4f0d3530a806c4c0c6f82c1de28edc8480dab417..359586fae7e1f41550a70c62f6071bc1510f0f83 100644 --- a/addons/procurement/procurement.py +++ b/addons/procurement/procurement.py @@ -335,8 +335,6 @@ class procurement_order(osv.osv): }) move_obj.action_confirm(cr, uid, [id], context=context) self.write(cr, uid, [procurement.id], {'move_id': id, 'close_move': 1}) - message = _("Procurement '%s' is running.") % procurement.name - self.log(cr, uid, procurement.id, message) self.write(cr, uid, ids, {'state': 'confirmed', 'message': ''}) return True @@ -370,9 +368,8 @@ class procurement_order(osv.osv): cr.execute('update procurement_order set message=%s where id=%s', (_('Not enough stock and no minimum orderpoint rule defined.'), procurement.id)) - message = _("Procurement '%s' has an exception." \ - "Not enough stock and no minimum orderpoint rule defined.") % \ - procurement.name + message = _("Procurement '%s' is in exception: not enough stock.") % \ + (procurement.name,) self.log(cr, uid, procurement.id, message) return ok @@ -451,8 +448,6 @@ class procurement_order(osv.osv): if procurement.move_id: if procurement.close_move and (procurement.move_id.state <> 'done'): move_obj.action_done(cr, uid, [procurement.move_id.id]) - message = _("Procurement '%s' is done.") % procurement.name - self.log(cr, uid, procurement.id, message) res = self.write(cr, uid, ids, {'state': 'done', 'date_close': time.strftime('%Y-%m-%d')}) wf_service = netsvc.LocalService("workflow") for id in ids: diff --git a/addons/procurement/procurement_view.xml b/addons/procurement/procurement_view.xml index 4d54fa256a865b4b78d617950c9d40a5431a8a64..53f84367b178ffee74067773857f6792bcb64d1b 100644 --- a/addons/procurement/procurement_view.xml +++ b/addons/procurement/procurement_view.xml @@ -132,7 +132,7 @@ <field name="view_id" eval="False"/> <field name="search_view_id" ref="view_procurement_filter"/> <field name="context">{'search_default_current':1}</field> - <field name="help">Procurement Orders represent the need for a certain quantity of products, at a given time, in a given location. Sale Orders are one typical source of Procurement Orders (but these are distinct documents). Depending on the procurement parameters and the products configuration, the procurement engine will attempt to satisfy the need by reserving products from stock, or ordering products from a supplier, or passing a manufacturing order, etc.</field> + <field name="help">A procurement order is used to record a need in a specific product at a specific location. They are usually created automatically by the sales orders, the Pull Logistics rules or the minimum stock rules. When the procurement order is confirmed, it creates automatically the necessary operations to fullfil the need: purchase order proposition, manufacturing order, etc.</field> </record> <record id="procurement_exceptions" model="ir.actions.act_window"> @@ -235,6 +235,7 @@ <field name="view_type">form</field> <field name="view_id" ref="view_warehouse_orderpoint_tree"/> <field name="search_view_id" ref="warehouse_orderpoint_search" /> + <field name="help">You can define your minimum stock rules, so that OpenERP will trigger automatically the propositions of manufacturing or purchase orders according to the stock level. Once the virtual stock of a product (=stock on hand minus all confirmed orders and reservations) is bellow the minimum quantity, OpenERP will generate a procurement request in order to fullfil the stock up to the maximum quantity.</field> </record> <act_window diff --git a/addons/procurement/security/ir.model.access.csv b/addons/procurement/security/ir.model.access.csv index b1dadfb3ee04ebaddd7863a1face21399d35fd7d..382543c9df40afe2812a43181684b0eabf9a2913 100644 --- a/addons/procurement/security/ir.model.access.csv +++ b/addons/procurement/security/ir.model.access.csv @@ -1,8 +1,9 @@ "id","name","model_id:id","group_id:id","perm_read","perm_write","perm_create","perm_unlink" "access_procurement","procurement.order","model_procurement_order","base.group_user",1,0,0,0 -"access_stock_warehouse_orderpoint","stock.warehouse.orderpoint","model_stock_warehouse_orderpoint","stock.group_stock_manager",1,1,1,1 +"access_procurement_stock_manager","procurement.order stock.manager","model_procurement_order","stock.group_stock_manager",1,1,1,1 +"access_procurement_stock_user","procurement.order stock.user","model_procurement_order","stock.group_stock_user",1,1,1,1 +"access_stock_warehouse_orderpoint","stock.warehouse.orderpoint","model_stock_warehouse_orderpoint","stock.group_stock_user",1,1,1,1 "access_stock_warehouse_orderpoint_system","stock.warehouse.orderpoint system","model_stock_warehouse_orderpoint","stock.group_stock_manager",1,1,1,1 -"access_stock_warehouse_orderpoint_user","stock.warehouse.orderpoint user","model_stock_warehouse_orderpoint","base.group_system",1,0,0,0 "access_mrp_property_group","mrp.property.group","model_mrp_property_group","stock.group_stock_manager",1,1,1,1 "access_mrp_property","mrp.property","model_mrp_property","stock.group_stock_manager",1,1,1,1 "access_mrp_property_group","mrp.property.group","model_mrp_property_group","base.group_user",1,0,0,0 diff --git a/addons/procurement/wizard/schedulers_all_view.xml b/addons/procurement/wizard/schedulers_all_view.xml index 40c72ee68c72ed3f8454f9908159d1a194176b44..00b6225101ebb4a24016f36c8614ca219fe0b6e7 100644 --- a/addons/procurement/wizard/schedulers_all_view.xml +++ b/addons/procurement/wizard/schedulers_all_view.xml @@ -10,7 +10,7 @@ <field name="type">form</field> <field name="arch" type="xml"> <form string="Scheduler Parameters"> - <label string="Wizard run all the procurements, and generate task, production order or purchase order based on the product type" colspan="4"/> + <label string="This wizard allows you to run all procurement, production and/or purchase orders that should be processed based on their configuration. By default, the scheduler is launched automatically every night by OpenERP. You can use this menu to force it to be launched now. Note that it runs in the background, you may have to wait for a few minutes until it has finished computing." colspan="4"/> <separator colspan="4"/> <field name="automatic"/> <separator colspan="4"/> diff --git a/addons/product/i18n/sr.po b/addons/product/i18n/sr.po index 291a538397647e8f6afab96502c9f2035a43ecc8..8cc0f2990fa0029f12d491ca347e56440b37ba9b 100644 --- a/addons/product/i18n/sr.po +++ b/addons/product/i18n/sr.po @@ -8,13 +8,13 @@ msgstr "" "Project-Id-Version: openobject-addons\n" "Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n" "POT-Creation-Date: 2009-08-28 16:01+0000\n" -"PO-Revision-Date: 2010-10-15 11:15+0000\n" -"Last-Translator: zmmaj <Unknown>\n" +"PO-Revision-Date: 2010-10-16 08:45+0000\n" +"Last-Translator: OpenERP Administrators <Unknown>\n" "Language-Team: Serbian <sr@li.org>\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2010-10-16 04:48+0000\n" +"X-Launchpad-Export-Date: 2010-10-17 04:53+0000\n" "X-Generator: Launchpad (build Unknown)\n" #. module: product diff --git a/addons/product/pricelist_view.xml b/addons/product/pricelist_view.xml index 589dfb5f290e5d15791a8c437eae380f6f8d654c..76623dc57102fd882834530112e97c25c8476e96 100644 --- a/addons/product/pricelist_view.xml +++ b/addons/product/pricelist_view.xml @@ -42,6 +42,7 @@ <field name="res_model">product.pricelist.version</field> <field name="view_type">form</field> <field name="view_id" ref="product_pricelist_version_tree_view"/> + <field name="help">There can be more than one version of a pricelist. If you need to create new versions of a pricelist, you can do it and manage them from here. Some examples of versions: 2010, 2011, Promotion of February 2010, etc.</field> </record> <menuitem action="product_pricelist_action" id="menu_product_pricelist_action" @@ -163,6 +164,7 @@ <field name="view_type">form</field> <field name="view_mode">tree,form</field> <field name="search_view_id" ref="product_pricelist_view_search" /> + <field name="help">A pricelist contains rules to be evaluated in order to compute the purchase or sale price for all the partners assigned to a pricelist. Pricelists have several versions (2010, 2011, Promotion of February 2010, etc.) and each version has several rules. Example: the customer price of this category of product will be based on the supplier price multiplied by 1.80.</field> </record> <menuitem action="product_pricelist_action2" id="menu_product_pricelist_action2" diff --git a/addons/product/product.py b/addons/product/product.py index 3e4d48e5c746c937f4a535e6752666153af51d2a..91a823d1a98fa441075f8c2f5b44863327566207 100644 --- a/addons/product/product.py +++ b/addons/product/product.py @@ -283,12 +283,8 @@ class product_template(osv.osv): return res and res[1] or False def onchange_uom(self, cursor, user, ids, uom_id,uom_po_id): - if uom_id and uom_po_id: - uom_obj=self.pool.get('product.uom') - uom=uom_obj.browse(cursor,user,[uom_id])[0] - uom_po=uom_obj.browse(cursor,user,[uom_po_id])[0] - if uom.category_id.id != uom_po.category_id.id: - return {'value': {'uom_po_id': uom_id}} + if uom_id: + return {'value': {'uom_po_id': uom_id}} return False _defaults = { diff --git a/addons/product/product_view.xml b/addons/product/product_view.xml index d7b4163f0ee9d59e726416f4c748283e33a889e3..d0107c56ffeeb7d35227a7f56b5a4687d6e5c060 100644 --- a/addons/product/product_view.xml +++ b/addons/product/product_view.xml @@ -17,7 +17,7 @@ <separator orientation="vertical"/> <field name="default_code"/> <field name="name"/> - <field name="categ_id" widget="selection" operator="child_of"/> + <field name="categ_id" widget="selection" operator="child_of" groups="base.group_extended"/> <newline/> <group expand="0" string="Extended Filters..." groups="base.group_extended"> <field name="pricelist_id" widget="selection" context="{'pricelist': self}" /> @@ -53,7 +53,7 @@ <field name="lst_price"/> <field name="standard_price"/> <field name="price" invisible="not context.get('pricelist',False)"/> - <field name="state"/> + <field name="state" groups="base.group_extended"/> </tree> </field> </record> @@ -90,6 +90,16 @@ <field name="procure_method" groups="base.group_extended"/> <field name="supply_method"/> </group> + <group colspan="2" col="2"> + <separator string="Base Prices" colspan="2"/> + <field name="standard_price" attrs="{'readonly':[('cost_method','=','average')]}"/> + <field name="list_price"/> + <newline/> + <field name="price_margin" groups="product.group_product_variant"/> + <field name="price_extra" groups="product.group_product_variant"/> + <newline/> + <field groups="base.group_extended" name="cost_method"/> + </group> <group colspan="2" col="2" groups="base.group_extended"> <separator string="Weigths" colspan="2"/> @@ -98,11 +108,11 @@ <field digits="(14, 3)" name="weight_net" attrs="{'readonly':[('type','=','service')]}"/> </group> - <group colspan="2" col="2" name="status"> + <group colspan="2" col="2" name="status" groups="base.group_extended"> <separator string="Status" colspan="2"/> - <field name="categ_id" select="1"/> + <field name="categ_id"/> <field name="state"/> - <field groups="base.group_extended" name="product_manager"/> + <field name="product_manager"/> </group> <group colspan="2" col="2" name="uom"> @@ -140,16 +150,7 @@ </group> </page> - <page string="Prices & Suppliers"> - <separator string="Base Prices" colspan="4"/> - <field name="standard_price" attrs="{'readonly':[('cost_method','=','average')]}"/> - <field name="list_price"/> - <newline/> - <field name="price_margin" groups="product.group_product_variant"/> - <field name="price_extra" groups="product.group_product_variant"/> - <newline/> - <field groups="base.group_extended" name="cost_method"/> - <newline/> + <page string="Suppliers"> <field colspan="4" name="seller_ids" nolabel="1"/> </page> <page string="Descriptions"> @@ -196,8 +197,8 @@ <field name="help">You must define a Product for everything you buy or sell. They can be raw materials, stockable products, consumables or services. The Product form contains a detailed information of your products related to procurement logistics, sales price, product category, suppliers and so on.</field> </record> - <menuitem id="base.menu_product" name="Products" parent="base.menu_base_partner" sequence="9" groups="group_product_manager,base.group_sale_salesman,base.group_system"/> - <menuitem action="product.product_normal_action" id="product.menu_products" parent="base.menu_product" sequence="1" groups="base.group_sale_salesman,base.group_sale_manager,base.group_system,group_product_manager"/> + <menuitem id="base.menu_product" name="Products" parent="base.menu_base_partner" sequence="9" groups="group_product_manager,base.group_sale_salesman"/> + <menuitem action="product.product_normal_action" id="product.menu_products" parent="base.menu_product" sequence="1" groups="base.group_sale_salesman,base.group_sale_manager,group_product_manager"/> <record id="product_normal_action_puchased" model="ir.actions.act_window"> <field name="name">Products</field> @@ -207,6 +208,7 @@ <field name="domain">[('purchase_ok','=',1)]</field> <field name="view_id" ref="product_product_tree_view"/> <field name="search_view_id" ref="product_search_form_view"/> + <field name="help">Products can be purchased and/or sold. They can be raw materials, stockable products, consumables or services. The Product form contains a detailed information on your products related to procurement logistics, sales price, product category, suppliers and so on.</field> </record> <record id="product_category_form_view" model="ir.ui.view"> @@ -252,7 +254,7 @@ <field name="domain">[('parent_id','=',False)]</field> <field name="view_type">tree</field> <field name="view_id" ref="product_category_tree_view"/> - <field name="help">Here is a list of all your products classified by category. You can click on a category to get the list of all products linked to this category or to a child of this category.</field> + <field name="help">Create and manage product categories you want to be maintained in the system. This allows you to classify your products according to your needs.</field> </record> <menuitem action="product_category_action" @@ -346,6 +348,7 @@ <field name="res_model">product.uom</field> <field name="view_type">form</field> <field name="view_id" ref="product_uom_tree_view"/> + <field name="help">Create and manage the units of measure you want to be used in your system. You can define a conversion rate to be used between the several Unit of Measure within the same category.</field> </record> <menuitem id="next_id_16" name="Units of Measure" parent="prod_config_main" sequence="65"/> <menuitem action="product_uom_form_action" id="menu_product_uom_form_action" parent="next_id_16"/> @@ -366,6 +369,7 @@ <field name="res_model">product.uom.categ</field> <field name="view_type">form</field> <field name="view_mode">tree,form</field> + <field name="help">Create and manage the units of measure categories you want to be used in your system. If several units of measures are in the same category, they can be converted within each other. For example, in the unit of measure category "Time", you will have the following UoM: Hours, Days.</field> </record> <menuitem action="product_uom_categ_form_action" id="menu_product_uom_categ_form_action" parent="product.next_id_16" sequence="5"/> @@ -397,6 +401,7 @@ <field name="res_model">product.ul</field> <field name="view_type">form</field> <field name="view_mode">tree,form</field> + <field name="help">Create and manage your packaging dimensions and types you want to be maintained in your system.</field> </record> <menuitem action="product_ul_form_action" groups="base.group_extended" id="menu_product_ul_form_action" parent="prod_config_main" sequence="3"/> @@ -526,7 +531,7 @@ <field name="name"/> <field name="categ_id"/> <field name="type"/> - <field name="state"/> + <field name="state" groups="base.group_extended"/> </tree> </field> </record> @@ -555,6 +560,13 @@ <field name="supply_method"/> </group> + <group colspan="2" col="2"> + <separator string="Base Prices" colspan="2"/> + <field name="standard_price" attrs="{'readonly':[('cost_method','=','average')]}"/> + <field name="list_price"/> + <field groups="base.group_extended" name="cost_method"/> + </group> + <group colspan="2" col="2" groups="base.group_extended"> <separator string="Weigths" colspan="2"/> <field digits="(14, 3)" name="volume" attrs="{'readonly':[('type','=','service')]}"/> @@ -562,11 +574,11 @@ <field digits="(14, 3)" name="weight_net" attrs="{'readonly':[('type','=','service')]}"/> </group> - <group colspan="2" col="2" name="status"> + <group colspan="2" col="2" name="status" groups="base.group_extended"> <separator string="Status" colspan="2"/> <field name="categ_id" select="1"/> <field name="state"/> - <field groups="base.group_extended" name="product_manager"/> + <field name="product_manager"/> </group> <group colspan="2" col="2" name="uom"> @@ -601,12 +613,7 @@ </group> </page> - <page string="Prices & Suppliers"> - <separator string="Base Prices" colspan="4"/> - <field name="standard_price" attrs="{'readonly':[('cost_method','=','average')]}"/> - <field name="list_price"/> - <field groups="base.group_extended" name="cost_method"/> - <newline/> + <page string="Suppliers"> <field colspan="4" name="seller_ids" nolabel="1"/> </page> <page string="Descriptions"> diff --git a/addons/product/security/ir.model.access.csv b/addons/product/security/ir.model.access.csv index 7b8da0dd675c026dbd28927f7c6b1ddc5890c228..2e4e598fdfe247c882a6287ef8a8d189e5e38212 100644 --- a/addons/product/security/ir.model.access.csv +++ b/addons/product/security/ir.model.access.csv @@ -30,14 +30,4 @@ "access_product_pricelist_partner_manager","product.pricelist partner manager","model_product_pricelist","base.group_partner_manager",1,0,0,0 "access_ir_property_group_product_manager","ir_property group_product_manager","base.model_ir_property","product.group_product_manager",1,1,1,1 "access_product_group_res_partner","res_partner group_product_manager","base.model_res_partner","product.group_product_manager",1,1,1,1 -"access_product_price_type","product.price.type ","model_product_price_type","base.group_system",1,1,1,1 -"access_product_pricelist_type","product.pricelist.type ","model_product_pricelist_type","base.group_system",1,1,1,1 -"access_product_pricelist","product.pricelist ","model_product_pricelist","base.group_system",1,1,1,1 -"access_product_pricelist_version","product.pricelist.version ","model_product_pricelist_version","base.group_system",1,1,1,1 -"access_product_pricelist_item","product.pricelist.item ","model_product_pricelist_item","base.group_system",1,1,1,1 -"access_product_uom_categ","product.uom.categ","model_product_uom_categ","base.group_system",1,1,1,1 -"access_product_uom","product.uom","model_product_uom","base.group_system",1,1,1,1 -"access_product_ul_system","product.ul system","model_product_ul","base.group_system",1,1,1,1 -"access_product_product_system","product.product system","model_product_product","base.group_system",1,0,0,0 -"access_product_category_system","product.category.system","model_product_category","base.group_system",1,1,1,1 "access_product_product_employee","product.product employee","model_product_product","base.group_user",1,0,0,0 diff --git a/addons/product/security/product_security.xml b/addons/product/security/product_security.xml index 171cf523b8b340392814834d8eeb2fc31fc51d97..32399358f68d9f178816a273231e1ae0f8c80340 100644 --- a/addons/product/security/product_security.xml +++ b/addons/product/security/product_security.xml @@ -6,7 +6,7 @@ <field name="name">Useability / Product UoS View</field> </record> <record id="group_product_manager" model="res.groups"> - <field name="name">Product / Manager</field> + <field name="name">Product Manager</field> </record> <record id="base.group_sale_manager" model="res.groups"> diff --git a/addons/product_margin/product_margin_view.xml b/addons/product_margin/product_margin_view.xml index 7ebd5f34588d37ea5fc7f05c50a9fb2032d7c625..cde2d514560fe3ca633f8374ac7fe3c2898bd622 100644 --- a/addons/product_margin/product_margin_view.xml +++ b/addons/product_margin/product_margin_view.xml @@ -84,7 +84,7 @@ </field> </record> - <menuitem icon="STOCK_JUSTIFY_FILL" action="product_margin_act_window" id="menu_action_product_margin" name="Product Margins" sequence="5" parent="base.menu_product" groups="base.group_sale_salesman,base.group_sale_manager,product.group_product_manager,base.group_system"/> + <menuitem icon="STOCK_JUSTIFY_FILL" action="product_margin_act_window" id="menu_action_product_margin" name="Product Margins" sequence="5" parent="base.menu_product" groups="base.group_sale_salesman,base.group_sale_manager,product.group_product_manager"/> </data> </openerp> diff --git a/addons/profile_tools/installer.py b/addons/profile_tools/installer.py index 54fd06028021548c139343b4e03dc4daab4f815b..6ea024aebbe29554f2ba08cb078159361276c94d 100644 --- a/addons/profile_tools/installer.py +++ b/addons/profile_tools/installer.py @@ -29,9 +29,10 @@ class misc_tools_installer(osv.osv_memory): 'subscription':fields.boolean('Recurring Documents',help='Helps to generate automatically recurring documents.'), 'survey':fields.boolean('Survey',help='Allows you to organize surveys.'), 'idea':fields.boolean('Ideas Box',help='Promote ideas of the employees, votes and discussion on best ideas.'), + 'share':fields.boolean('Share Data / Portals',help='This module allows you to easily give restricted access of any filtered list of objects to any customer or supplier.' \ + 'Just click on the share icon to give access to your customers on their project\'s tasks, support requests, invoices, etc.'), } _defaults = { - 'lunch': True, } misc_tools_installer() diff --git a/addons/profile_tools/misc_tools_installer.xml b/addons/profile_tools/misc_tools_installer.xml index b59f95ab908ecda6288ac0b1127c78b2ef94cea2..d81936756a643764e64f1a114e30fd0acbb14fe0 100644 --- a/addons/profile_tools/misc_tools_installer.xml +++ b/addons/profile_tools/misc_tools_installer.xml @@ -25,6 +25,7 @@ <attribute name="string">Configure</attribute> </xpath> <group colspan="8"> + <field name="share"/> <field name="lunch"/> <field name="idea"/> <field name="survey"/> diff --git a/addons/project/board_project_view.xml b/addons/project/board_project_view.xml index 93a446131eba89ee2440ed09fe6f4720a47cf0db..bc86872110aafedba3b0d117f19cdda13d4b447c 100644 --- a/addons/project/board_project_view.xml +++ b/addons/project/board_project_view.xml @@ -23,7 +23,7 @@ <field name="progress" widget="progressbar"/> <field name="state" invisible="context.get('set_visible',False)"/> <button name="do_cancel" states="draft,open,pending" string="Cancel" type="object" icon="gtk-cancel" help="For cancelling the task"/> - <button name="do_open" states="pending,draft,done,cancel" string="Start Task" type="object" icon="gtk-execute" help="For changing to open state" invisible="context.get('set_visible',False)"/> + <button name="do_open" states="pending,draft,done,cancel" string="Start Task" type="object" icon="gtk-execute" help="For changing to open state" invisible="context.get('set_visible',False)"/> <button groups="base.group_extended" name="%(action_project_task_delegate)d" states="pending,open,draft" string="Delegate" type="action" icon="gtk-sort-descending" help="For changing to delegate state"/> <button name="action_close" states="draft,pending,open" string="Done" type="object" icon="gtk-apply" help="For changing to done state"/> </tree> @@ -36,25 +36,16 @@ <field name="type">tree</field> <field eval="99" name="priority"/> <field name="arch" type="xml"> - <tree colors="red:date_deadline<current_date;blue:date_deadline==current_date;black:date_deadline>current_date" string="My Delegated Tasks"> - <field name="user_id"/> + <tree colors="red:date_deadline<current_date" string="My Delegated Tasks"> <field name="name"/> <field name="project_id"/> + <field name="delegated_user_id"/> <field name="date_deadline"/> <field name="total_hours" widget="float_time"/> <field name="progress" widget="progressbar"/> - <field name="type_id"/> - <button name="next_type" invisible="context.get('set_visible',False)" - states="draft,open,pending" - string="Change Stage" - type="object" - icon="gtk-go-forward" - groups="base.group_extended" - help="Change Type"/> <field name="state" invisible="context.get('set_visible',False)"/> <button name="do_cancel" states="draft,open,pending" string="Cancel" type="object" icon="gtk-cancel" help="For cancelling the task"/> - <button name="do_open" states="pending,draft,done,cancel" string="Start Task" type="object" icon="gtk-execute" help="For changing to open state" invisible="context.get('set_visible',False)"/> - <button groups="base.group_extended" name="%(action_project_task_delegate)d" states="pending,open,draft" string="Delegate" type="action" icon="gtk-sort-descending" help="For changing to delegate state"/> + <button name="do_open" states="pending,draft,done,cancel" string="Start Task" type="object" icon="gtk-execute" help="For changing to open state" invisible="context.get('set_visible',False)"/> <button name="action_close" states="draft,pending,open" string="Done" type="object" icon="gtk-apply" help="For changing to done state"/> </tree> </field> @@ -137,10 +128,5 @@ parent="next_id_86" sequence="1"/> - <menuitem - icon="terp-project" id="base.menu_main_pm" - name="Project" sequence="10" action="open_board_project" - groups="group_project_manager,group_project_user,base.group_system"/> - </data> </openerp> diff --git a/addons/project/company.py b/addons/project/company.py index 18f970118a4e9345a7ff649f1e2ba32ca50343b0..0967d13073758fada259f964d5d10a9d01028805 100644 --- a/addons/project/company.py +++ b/addons/project/company.py @@ -31,13 +31,5 @@ class res_company(osv.osv): "forget to setup the right unit of measure in your employees.", ), } - - def write(self, cr, uid, ids,vals, context={}): - task_ids=self.pool.get('project.task').search(cr, uid, [('state','in',['open', 'pending'])]) - if ('project_time_mode_id' in vals) and task_ids: - raise osv.except_osv(_('Error !'), _('You cannot modify Project Time Unit as there are open or pending tasks created with current time unit.')) - return super(res_company,self).write(cr, uid, ids, vals, context=context) - res_company() -# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/addons/project/installer.py b/addons/project/installer.py index 7a147737768fe7587b76b0e992dadbe791f91bbb..693e2d5801865383d5ecb6be7718137edba60ea3 100644 --- a/addons/project/installer.py +++ b/addons/project/installer.py @@ -47,11 +47,6 @@ class project_installer(osv.osv_memory): 'project_gtd': fields.boolean('Getting Things Done', help="GTD is a methodology to efficiently organise yourself and your tasks. This module fully integrates GTD principle with OpenERP's project management."), } - - _defaults={ - 'project_issue': True, - } - project_installer() # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/addons/project/project.py b/addons/project/project.py index a09855d3bce49bdae7706ae17bedc8c54caccebb..254d447b618c0fec5327ed3da9f540c32c25a782 100644 --- a/addons/project/project.py +++ b/addons/project/project.py @@ -78,82 +78,30 @@ class project(osv.osv): pricelist_id = pricelist.get('property_product_pricelist', False) and pricelist.get('property_product_pricelist')[0] or False return {'value':{'contact_id': addr['contact'], 'pricelist_id': pricelist_id}} - def _get_user_and_default_uom_ids(self, cr, uid): - users_obj = self.pool.get('res.users') - model_data_obj = self.pool.get('ir.model.data') - model_data_id = model_data_obj._get_id(cr, uid, 'product', 'uom_hour') - default_uom = user_uom = model_data_obj.read(cr, uid, [model_data_id], ['res_id'])[0]['res_id'] - obj_tm = users_obj.browse(cr, uid, uid).company_id.project_time_mode_id - if obj_tm: - user_uom = obj_tm.id - return user_uom, default_uom - def _progress_rate(self, cr, uid, ids, names, arg, context=None): - def _get_all_child_projects(ids): - """Recursively get child project ids""" - child_ids = flatten([project_hierarchy.get(idn, []) for idn in ids]) - if child_ids: - child_ids = _get_all_child_projects(child_ids) - return ids + child_ids - # END _get_all_child_projects - res = {}.fromkeys(ids, 0.0) progress = {} if not ids: return res - - par_child_projects = {} - all_projects = list(ids) - - # get project hierarchy: - cr.execute('''SELECT prp.id AS pr_parent_id, prpc.id AS pr_child_id - FROM account_analytic_account AS p - JOIN account_analytic_account AS c ON p.id = c.parent_id - JOIN project_project AS prp ON prp.analytic_account_id = p.id - JOIN project_project AS prpc ON prpc.analytic_account_id = c.id''') - - project_hierarchy = dict((k, list(set([v[1] for v in itr]))) for k, itr in groupby(cr.fetchall(), itemgetter(0))) - - for id in ids: - child_projects = _get_all_child_projects([id]) - par_child_projects[id] = child_projects - all_projects.extend(child_projects) - - all_projects = dict.fromkeys(all_projects).keys() cr.execute('''SELECT project_id, sum(planned_hours), sum(total_hours), sum(effective_hours) FROM - project_task + project_task WHERE - project_id IN %s AND + project_id in %s AND state<>'cancelled' GROUP BY - project_id''',(tuple(all_projects),)) - progress = dict(map(lambda x: (x[0], (x[1] or 0.0, x[2] or 0.0, x[3] or 0.0)), cr.fetchall())) - - user_uom, def_uom = self._get_user_and_default_uom_ids(cr, uid) - for project in self.browse(cr, uid, par_child_projects.keys(), context=context): - s = [0.0, 0.0, 0.0] - tocompute = par_child_projects[project.id] - while tocompute: - p = tocompute.pop() - for i in range(3): - s[i] += progress.get(p, (0.0, 0.0, 0.0))[i] - - uom_obj = self.pool.get('product.uom') - if user_uom != def_uom: - s[0] = uom_obj._compute_qty(cr, uid, user_uom, s[0], def_uom) - s[1] = uom_obj._compute_qty(cr, uid, user_uom, s[1], def_uom) - s[2] = uom_obj._compute_qty(cr, uid, user_uom, s[2], def_uom) - if project.state == 'close': - progress_rate = 100.0 - else: - progress_rate = s[1] and round(min(100.0 * s[2] / s[1], 99.99), 2) + project_id''', + (tuple(ids),)) + progress = dict(map(lambda x: (x[0], (x[1],x[2],x[3])), cr.fetchall())) + + for project in self.browse(cr, uid, ids, context=context): + s = progress.get(project.id, (0.0,0.0,0.0)) res[project.id] = { 'planned_hours': s[0], 'effective_hours': s[2], 'total_hours': s[1], - 'progress_rate': progress_rate + 'progress_rate': s[1] and (100.0 * s[2] / s[1]) or 0.0 } return res @@ -173,7 +121,6 @@ class project(osv.osv): if work.task_id and work.task_id.project_id: result[work.task_id.project_id.id] = True return result.keys() - def unlink(self, cr, uid, ids, *args, **kwargs): for proj in self.browse(cr, uid, ids): if proj.tasks: @@ -227,11 +174,12 @@ class project(osv.osv): 'sequence': 10, } + # TODO: Why not using a SQL contraints ? def _check_dates(self, cr, uid, ids): - leave = self.read(cr, uid, ids[0], ['date_start', 'date']) - if leave['date_start'] and leave['date']: - if leave['date_start'] > leave['date']: - return False + for leave in self.read(cr, uid, ids, ['date_start', 'date']): + if leave['date_start'] and leave['date']: + if leave['date_start'] > leave['date']: + return False return True _constraints = [ @@ -248,7 +196,7 @@ class project(osv.osv): task_obj.write(cr, uid, task_ids, {'state': 'done', 'date_end':time.strftime('%Y-%m-%d %H:%M:%S'), 'remaining_hours': 0.0}) self.write(cr, uid, ids, {'state':'close'}, context=context) for (id, name) in self.name_get(cr, uid, ids): - message = _('Project ') + " '" + name + "' "+ _("is Closed.") + message = _("The project '%s' has been closed.") % name self.log(cr, uid, id, message) return True @@ -270,7 +218,7 @@ class project(osv.osv): def reset_project(self, cr, uid, ids, context=None): res = self.setActive(cr, uid, ids, value=True, context=context) for (id, name) in self.name_get(cr, uid, ids): - message = _('Project ') + " '" + name + "' "+ _("is Open.") + message = _("The project '%s' has been opened.") % name self.log(cr, uid, id, message) return res @@ -387,23 +335,9 @@ class task(osv.osv): res = {} cr.execute("SELECT task_id, COALESCE(SUM(hours),0) FROM project_task_work WHERE task_id IN %s GROUP BY task_id",(tuple(ids),)) hours = dict(cr.fetchall()) - - uom_obj = self.pool.get('product.uom') - user_uom, default_uom = project_obj._get_user_and_default_uom_ids(cr, uid) - if user_uom != default_uom: - for task in self.browse(cr, uid, ids, context=context): - if hours.get(task.id, False): - dur_in_user_uom = uom_obj._compute_qty(cr, uid, default_uom, hours.get(task.id, 0.0), user_uom) - hours[task.id] = dur_in_user_uom - timespent=0 for task in self.browse(cr, uid, ids, context=context): - res[task.id] = {'effective_hours': hours.get(task.id, 0.0), 'total_hours': task.remaining_hours + hours.get(task.id, 0.0)} -# res[task.id]['delay_hours'] = res[task.id]['total_hours'] - task.planned_hours - - for ctimespent in task.work_ids: - timespent=timespent+ctimespent.hours - res[task.id]['delay_hours'] = task.planned_hours - timespent - + res[task.id] = {'effective_hours': hours.get(task.id, 0.0), 'total_hours': (task.remaining_hours or 0.0) + hours.get(task.id, 0.0)} + res[task.id]['delay_hours'] = res[task.id]['total_hours'] - task.planned_hours res[task.id]['progress'] = 0.0 if (task.remaining_hours + hours.get(task.id, 0.0)): res[task.id]['progress'] = round(min(100.0 * hours.get(task.id, 0.0) / res[task.id]['total_hours'], 99.99),2) @@ -468,7 +402,7 @@ class task(osv.osv): 'description': fields.text('Description'), 'priority': fields.selection([('4','Very Low'), ('3','Low'), ('2','Medium'), ('1','Urgent'), ('0','Very urgent')], 'Priority'), 'sequence': fields.integer('Sequence', help="Gives the sequence order when displaying a list of tasks."), - 'type_id': fields.many2one('project.task.type', 'Type',), + 'type_id': fields.many2one('project.task.type', 'Stage'), 'state': fields.selection([('draft', 'Draft'),('open', 'In Progress'),('pending', 'Pending'), ('cancelled', 'Cancelled'), ('done', 'Done')], 'State', readonly=True, required=True, help='If the task is created the state is \'Draft\'.\n If the task is started, the state becomes \'In Progress\'.\n If review is needed the task is in \'Pending\' state.\ \n If the task is over, the states is set to \'Done\'.'), @@ -483,23 +417,23 @@ class task(osv.osv): 'planned_hours': fields.float('Planned Hours', help='Estimated time to do the task, usually set by the project manager when the task is in draft state.'), 'effective_hours': fields.function(_hours_get, method=True, string='Hours Spent', multi='hours', help="Computed using the sum of the task work done.", store = { - 'project.task': (lambda self, cr, uid, ids, c={}: ids, ['work_ids'], 10), + 'project.task': (lambda self, cr, uid, ids, c={}: ids, ['work_ids', 'remaining_hours', 'planned_hours'], 10), 'project.task.work': (_get_task, ['hours'], 10), }), 'remaining_hours': fields.float('Remaining Hours', digits=(16,2), help="Total remaining time, can be re-estimated periodically by the assignee of the task."), 'total_hours': fields.function(_hours_get, method=True, string='Total Hours', multi='hours', help="Computed as: Time Spent + Remaining Time.", store = { - 'project.task': (lambda self, cr, uid, ids, c={}: ids, ['work_ids'], 10), + 'project.task': (lambda self, cr, uid, ids, c={}: ids, ['work_ids', 'remaining_hours', 'planned_hours'], 10), 'project.task.work': (_get_task, ['hours'], 10), }), 'progress': fields.function(_hours_get, method=True, string='Progress (%)', multi='hours', group_operator="avg", help="Computed as: Time Spent / Total Time.", store = { - 'project.task': (lambda self, cr, uid, ids, c={}: ids, ['work_ids'], 10), + 'project.task': (lambda self, cr, uid, ids, c={}: ids, ['work_ids', 'remaining_hours', 'planned_hours','state'], 10), 'project.task.work': (_get_task, ['hours'], 10), }), 'delay_hours': fields.function(_hours_get, method=True, string='Delay Hours', multi='hours', help="Computed as difference of the time estimated by the project manager and the real time to close the task.", store = { - 'project.task': (lambda self, cr, uid, ids, c={}: ids, ['work_ids'], 10), + 'project.task': (lambda self, cr, uid, ids, c={}: ids, ['work_ids', 'remaining_hours', 'planned_hours'], 10), 'project.task.work': (_get_task, ['hours'], 10), }), 'user_id': fields.many2one('res.users', 'Assigned to'), @@ -634,7 +568,7 @@ class task(osv.osv): if reopen: self.do_reopen(cr, uid, [parent_id.id]) self.write(cr, uid, [task.id], {'state': 'done', 'date_end':time.strftime('%Y-%m-%d %H:%M:%S'), 'remaining_hours': 0.0}) - message = _('Task ') + " '" + task.name + "' "+ _("is Done.") + message = _("The task '%s' is done") % (task.name,) self.log(cr, uid, task.id, message) return True @@ -675,7 +609,7 @@ class task(osv.osv): 'ref_doc1': 'project.task,%d' % task.id, 'ref_doc2': 'project.project,%d' % project.id, }) - message = _('Task ') + " '" + task.name + "' "+ _("is Cancelled.") + message = _("The task '%s' is cancelled.") % (task.name,) self.log(cr, uid, task.id, message) self.write(cr, uid, [task.id], {'state': 'cancelled', 'remaining_hours':0.0}) return True @@ -687,7 +621,7 @@ class task(osv.osv): if not t.date_start: data['date_start'] = time.strftime('%Y-%m-%d %H:%M:%S') self.write(cr, uid, [t.id], data) - message = _('Task ') + " '" + t.name + "' "+ _("is Open.") + message = _("The task '%s' is opened.") % (t.name,) self.log(cr, uid, t.id, message) return True @@ -724,15 +658,15 @@ class task(osv.osv): else: self.do_close(cr, uid, [task.id], context) user_pool = self.pool.get('res.users') - delegrate_user = user_pool.browse(cr, uid, delegate_data['user_id'], context=context) - message = _('Task ') + " '" + delegate_data['name'] + "' "+ _("is Delegated to User:") +" '"+ delegrate_user.name +"' " + delegate_user = user_pool.browse(cr, uid, delegate_data['user_id'], context=context) + message = _("The task '%s' has been delegated to %s.") % (delegate_data['name'], delegate_user.name) self.log(cr, uid, task.id, message) return True def do_pending(self, cr, uid, ids, *args): self.write(cr, uid, ids, {'state': 'pending'}) for (id, name) in self.name_get(cr, uid, ids): - message = _('Task ') + " '" + name + "' "+ _("is Pending.") + message = _("The task '%s' is pending.") % name self.log(cr, uid, id, message) return True @@ -778,54 +712,25 @@ class project_work(osv.osv): } _order = "date desc" - def create(self, cr, uid, vals, *args, **kwargs): - project_obj = self.pool.get('project.project') - uom_obj = self.pool.get('product.uom') - if vals.get('hours', False): - user_uom, default_uom = project_obj._get_user_and_default_uom_ids(cr, uid) - duration = vals['hours'] - if user_uom != default_uom: - duration = uom_obj._compute_qty(cr, uid, default_uom, duration, user_uom) - cr.execute('update project_task set remaining_hours=remaining_hours - %s where id=%s', (duration, vals['task_id'])) - return super(project_work, self).create(cr, uid, vals, *args, **kwargs) - - def write(self, cr, uid, ids, vals, context=None): - project_obj = self.pool.get('project.project') - uom_obj = self.pool.get('product.uom') - if vals.get('hours', False): - old_hours = self.browse(cr, uid, ids, context=context) - user_uom, default_uom = project_obj._get_user_and_default_uom_ids(cr, uid) - duration = vals['hours'] - for old in old_hours: - if vals.get('hours') != old.hours: - # this code is only needed when we update the hours of the project - # TODO: it may still a second calculation if the task.id is changed - # at this task. - if user_uom == default_uom: - for work in self.browse(cr, uid, ids, context=context): - cr.execute('update project_task set remaining_hours=remaining_hours - %s + (%s) where id=%s', (duration, work.hours, work.task_id.id)) - else: - for work in self.browse(cr, uid, ids, context=context): - duration = uom_obj._compute_qty(cr, uid, default_uom, duration, user_uom) - del_work = uom_obj._compute_qty(cr, uid, default_uom, work.hours, user_uom) - cr.execute('update project_task set remaining_hours=remaining_hours - %s + (%s) where id=%s', (duration, del_work, work.task_id.id)) - return super(project_work,self).write(cr, uid, ids, vals, context=context) - - def unlink(self, cr, uid, ids, *args, **kwargs): - context = kwargs.get('context', {}) - project_obj = self.pool.get('project.project') - uom_obj = self.pool.get('product.uom') - user_uom, default_uom = project_obj._get_user_and_default_uom_ids(cr, uid) - if user_uom == default_uom: + if 'hours' in vals and (not vals['hours']): + vals['hours'] = 0.00 + if 'task_id' in vals: + cr.execute('update project_task set remaining_hours=remaining_hours - %s where id=%s', (vals.get('hours',0.0), vals['task_id'])) + return super(project_work,self).create(cr, uid, vals, *args, **kwargs) + + def write(self, cr, uid, ids,vals,context={}): + if 'hours' in vals and (not vals['hours']): + vals['hours'] = 0.00 + if 'hours' in vals: for work in self.browse(cr, uid, ids, context): - cr.execute('update project_task set remaining_hours=remaining_hours + %s where id=%s', (work.hours, work.task_id.id)) - else: - for work in self.browse(cr, uid, ids, context): - duration = uom_obj._compute_qty(cr, uid, default_uom, work.hours, user_uom) - cr.execute('update project_task set remaining_hours=remaining_hours + %s where id=%s', (duration, work.task_id.id)) - return super(project_work, self).unlink(cr, uid, ids, *args, **kwargs) + cr.execute('update project_task set remaining_hours=remaining_hours - %s + (%s) where id=%s', (vals.get('hours',0.0), work.hours, work.task_id.id)) + return super(project_work,self).write(cr, uid, ids, vals, context) + def unlink(self, cr, uid, ids, *args, **kwargs): + for work in self.browse(cr, uid, ids): + cr.execute('update project_task set remaining_hours=remaining_hours + %s where id=%s', (work.hours, work.task_id.id)) + return super(project_work,self).unlink(cr, uid, ids,*args, **kwargs) project_work() class account_analytic_account(osv.osv): diff --git a/addons/project/project_demo.xml b/addons/project/project_demo.xml index 8d3752c09793ce405d5182e35a0ddb73c002f13a..0c1c386a70048eb8e02c111b4ae68b32db57ce42 100644 --- a/addons/project/project_demo.xml +++ b/addons/project/project_demo.xml @@ -42,7 +42,7 @@ </record> <record id="res_users_finacial_manager" model="res.users"> <field name="name">Fabian</field> - <field eval="[(6, 0, [ref('base.group_user'), ref('project.group_project_finance')])]" name="groups_id"/> + <field eval="[(6, 0, [ref('base.group_user')])]" name="groups_id"/> <field name="login">fbs</field> <field name="password">fbs</field> </record> @@ -271,7 +271,7 @@ <record id="project_task_116" model="project.task"> <field name="planned_hours">38.0</field> <field name="remaining_hours">38.0</field> - <field name="type" ref="project_tt_development"/> + <field name="type_id" ref="project_tt_development"/> <field name="user_id" ref="base.user_root"/> <field name="project_id" ref="project_project_22"/> <field name="description">BoM, After sales returns, interventions. Traceability.</field> @@ -280,7 +280,7 @@ <record id="project_task_130" model="project.task"> <field name="planned_hours">16.0</field> <field name="remaining_hours">16.0</field> - <field name="type" ref="project_tt_development"/> + <field name="type_id" ref="project_tt_development"/> <field model="res.users" name="user_id" search="[('login','=','demo')]"/> <field name="project_id" ref="project_project_23"/> <field name="name">Data importation + Doc</field> @@ -288,7 +288,7 @@ <record id="project_task_131" model="project.task"> <field name="planned_hours">16.0</field> <field name="remaining_hours">16.0</field> - <field name="type" ref="project_tt_development"/> + <field name="type_id" ref="project_tt_development"/> <field model="res.users" name="user_id" search="[('login','=','demo')]"/> <field name="project_id" ref="project_project_23"/> <field name="name">Modifications asked by the customer.</field> @@ -296,7 +296,7 @@ <record id="project_task_184" model="project.task"> <field name="planned_hours">16.0</field> <field name="remaining_hours">16.0</field> - <field name="type" ref="project_tt_development"/> + <field name="type_id" ref="project_tt_development"/> <field model="res.users" name="user_id" search="[('login','=','demo')]"/> <field name="priority">0</field> <field name="project_id" ref="project_project_21"/> @@ -306,7 +306,7 @@ <field name="sequence">15</field> <field name="planned_hours">8.0</field> <field name="remaining_hours">8.0</field> - <field name="type" ref="project_tt_development"/> + <field name="type_id" ref="project_tt_development"/> <field model="res.users" name="user_id" search="[('login','=','demo')]"/> <field name="project_id" ref="project_project_21"/> <field name="name">Internal testing + Software Install</field> @@ -315,7 +315,7 @@ <field name="sequence">17</field> <field name="planned_hours">16.0</field> <field name="remaining_hours">16.0</field> - <field name="type" ref="project_tt_development"/> + <field name="type_id" ref="project_tt_development"/> <field model="res.users" name="user_id" search="[('login','=','demo')]"/> <field name="priority">2</field> <field name="state">open</field> @@ -357,7 +357,6 @@ <field name="project_id" ref="project_project_21"/> <field name="name">MRP; functional layer</field> <field name="state">done</field> - <field eval="time.strftime('%Y-%m-%d 12:12')" name="date_close"/> </record> <record id="project_task_194" model="project.task"> <field name="sequence">30</field> diff --git a/addons/project/project_view.xml b/addons/project/project_view.xml index a74bacf8e4eb4cc21dc48f4f4dde454394bb391e..8cf262237daa07bd161bdeec871b5f537509c182 100644 --- a/addons/project/project_view.xml +++ b/addons/project/project_view.xml @@ -5,10 +5,10 @@ <menuitem icon="terp-project" id="base.menu_main_pm" name="Project" sequence="10" - groups="group_project_manager,group_project_user,base.group_system,group_project_finance_user"/> + groups="group_project_manager,group_project_user"/> <menuitem id="menu_project_management" name="Project" parent="base.menu_main_pm" sequence="1"/> - <menuitem id="menu_definitions" name="Configuration" parent="base.menu_main_pm" sequence="60" groups="base.group_system,group_project_finance_user"/> + <menuitem id="menu_definitions" name="Configuration" parent="base.menu_main_pm" sequence="60"/> <!-- Project --> <record id="edit_project" model="ir.ui.view"> @@ -158,7 +158,7 @@ <field name="view_id" ref="view_project"/> <field name="search_view_id" ref="view_project_project_filter"/> <field name="context">{'search_default_Current':1}</field> - <field name="help">Consult and define your projects here. A project contains a set of related activities that will be performed by your company. Any project can be put into a hierarchy, as a child of a Parent Project. This allows you to design large project structure very useful for work organization.</field> + <field name="help">A project contains a set of tasks or issues that will be performed by your resources assigned on it. A project can be put into a hierarchy, as a child of a Parent Project. This allows you to design large project structure with different phases spread over the project duration cycle. Each user can set his default project in his own preferences, in order to filter automatically the tasks or issues he usually works on.</field> </record> <menuitem action="open_view_project_all" id="menu_open_view_project_all" parent="menu_project_management" sequence="1"/> @@ -304,17 +304,14 @@ <field name="type">tree</field> <field eval="2" name="priority"/> <field name="arch" type="xml"> - <tree colors="grey:state in ('cancelled','done');blue:remaining_hours<0 and state in ('pending');red:date_deadline and (date_deadline<current_date) and (state in ('draft','open'))" string="Tasks"> - <field name="id"/> + <tree colors="grey:state in ('cancelled','done');blue:state == 'pending';red:date_deadline and (date_deadline<current_date) and (state in ('draft','pending','open'))" string="Tasks"> <field name="sequence" invisible="not context.get('seq_visible', False)"/> <field name="name"/> <field name="project_id" icon="gtk-indent" domain="['|',('user_id','=',uid),('members','=',uid)]" invisible="context.get('user_invisible', False)"/> <field name="user_id" invisible="context.get('user_invisible', False)"/> <field name="delegated_user_id" invisible="context.get('show_delegated', True)"/> <field name="remaining_hours" widget="float_time" sum="Remaining Hours" on_change="onchange_remaining(remaining_hours,planned_hours)"/> - <field name="planned_hours"/> - <field name="delay_hours"/> - <field name="date_deadline" invisible="context.get('set_visible',False)"/> + <field name="date_deadline" invisible="context.get('deadline_visible',True)"/> <field name="type_id" groups="base.group_extended" invisible="context.get('set_visible',False)"/> <button name="next_type" invisible="context.get('set_visible',False)" states="draft,open,pending" @@ -328,7 +325,7 @@ <field name="progress" widget="progressbar" invisible="context.get('set_visible',False)"/> <field name="state" invisible="context.get('set_visible',False)"/> <button name="do_cancel" states="draft,open,pending" string="Cancel" type="object" icon="gtk-cancel" help="For cancelling the task"/> - <button name="do_open" states="pending,draft,done,cancel" string="Start Task" type="object" icon="gtk-execute" help="For changing to open state" invisible="context.get('set_visible',False)"/> + <button name="do_open" states="pending,draft,done,cancel" string="Start Task" type="object" icon="gtk-execute" help="For changing to open state" invisible="context.get('set_visible',False)"/> <button groups="base.group_extended" name="%(action_project_task_delegate)d" states="pending,open,draft" string="Delegate" type="action" icon="gtk-sort-descending" help="For changing to delegate state"/> <button name="action_close" states="draft,pending,open" string="Done" type="object" icon="terp-dialog-close" help="For changing to done state"/> </tree> @@ -391,11 +388,9 @@ icon="gtk-execute" groups="base.group_extended"/> <separator orientation="vertical"/> - <filter string="Deadlines" domain="[('date_deadline','<>',False)]" help="Show only tasks having a deadline" icon="terp-gnome-cpu-frequency-applet+"/> + <filter string="Deadlines" context="{'deadline_visible': False}" domain="[('date_deadline','<>',False)]" help="Show only tasks having a deadline" icon="terp-gnome-cpu-frequency-applet+"/> <separator orientation="vertical"/> <field name="name" select="1"/> - <field name="type_id" widget="selection"/> - <separator orientation="vertical"/> <field name="project_id" select="1"> <filter domain="[('project_id.user_id','=',uid)]" help="My Projects" icon="terp-personal"/> </field> @@ -430,7 +425,7 @@ <field name="view_id" ref="view_task_tree2"/> <field name="context">{"search_default_project_id":project_id, "search_default_user_id":uid, "search_default_current": 1}</field> <field name="search_view_id" ref="view_task_search_form"/> - <field name="help">In OpenERP, a project is made of a set of activities (or tasks) for completion. A list view allows the manager to quickly check for task status and make it evolve, delegate task, etc. A search tool allows a multi-criteria sort of activities.</field> + <field name="help">A task represents a work that has to be done. Each user works in his own list of tasks where he can record his task work in hours. He can work and close the task itself or delegate it to antoher user. If you delegate a task to another user, you get a new task in pending state, which will be re-opened when you have to review the work achieved. If you install the project_timesheet module, tasks works can be invoiced based on the project configuration. With the project_mrp module, sales orders can create tasks automatically when they are confirmed.</field> </record> <menuitem action="action_view_task" id="menu_action_view_task" parent="project.menu_project_management" sequence="3"/> @@ -494,9 +489,10 @@ <field name="res_model">project.task.type</field> <field name="view_type">form</field> <field name="view_id" ref="task_type_tree"/> + <field name="help">Define here the steps that will be used on the project from the creation of the task, up to the closing of the task or issue. You will use these stages in order to track the progress of the resolution of a task or an issue.</field> </record> - <menuitem id="menu_tasks_config" name="Tasks" parent="project.menu_definitions" sequence="1" groups="base.group_system,group_project_finance_user"/> + <menuitem id="menu_tasks_config" name="Tasks" parent="project.menu_definitions" sequence="1"/> <menuitem action="open_task_type_form" id="menu_task_types_view" parent="menu_tasks_config" sequence="1"/> <act_window context="{'search_default_user_id': [active_id]}" id="act_res_users_2_project_project" name="User's projects" res_model="project.project" src_model="res.users" view_mode="tree,form" view_type="form"/> diff --git a/addons/project/report/project_report_view.xml b/addons/project/report/project_report_view.xml index 5d5330564057f7669070e4beafb6eb7f0c3aec61..53d97c028029459061299a32240d4461fe640da4 100644 --- a/addons/project/report/project_report_view.xml +++ b/addons/project/report/project_report_view.xml @@ -146,10 +146,10 @@ <field name="view_mode">tree,graph</field> <field name="search_view_id" ref="view_task_project_user_search"/> <field name="context">{'search_default_month':1,'search_default_project':1,'group_by_no_leaf':1,'group_by':[]}</field> - <field name="help">Get detailed analysis by task</field> + <field name="help">This report allows you to analyse the performance of your projects and users. You can analyse the quantities of tasks, the hours spent compared to the planned hours, the average number of days to open or close a task, etc.</field> </record> - <menuitem id="menu_tasks_config" name="Tasks" parent="project.menu_definitions" sequence="1" groups="base.group_system,group_project_finance_user"/> + <menuitem id="menu_tasks_config" name="Tasks" parent="project.menu_definitions" sequence="1"/> <!-- Views and action for project dashboard --> <record id="view_project_vs_remaining_hours_tree" model="ir.ui.view"> diff --git a/addons/project/security/ir.model.access.csv b/addons/project/security/ir.model.access.csv index d842574f5ce8b998fdef1443740b34a4c7e1c5f7..fb237e88769d899233628880eda5851535a196a6 100644 --- a/addons/project/security/ir.model.access.csv +++ b/addons/project/security/ir.model.access.csv @@ -18,21 +18,6 @@ "access_partner_address_task manager","base.res.partner.address manager","base.model_res_partner_address","project.group_project_manager",1,0,0,0 "access_task_on_partner","project.task on partners","model_project_task","base.group_user",1,0,0,0 "access_project_on_partner","project.project on partners","model_project_project","base.group_user",1,0,0,0 -"access_project_task_system","project.task system","model_project_task","base.group_system",1,0,0,0 -"access_project_project_system","project.project system","model_project_project","base.group_system",1,1,1,1 -"access_project_task_work_system","project.task.work system","model_project_task_work","base.group_system",1,0,0,0 -"access_project_task_type_system","project.task.type system","model_project_task_type","base.group_system",1,1,1,1 -"access_report_project_task_user_system","report.project.task.user system","model_report_project_task_user","base.group_system",1,0,0,0 "access_project_vs_hours_manager","project.vs.hours.manager","model_project_vs_hours","project.group_project_manager",1,1,1,1 -"access_account_analytic_account_system","account.analytic.account system","analytic.model_account_analytic_account","base.group_system",1,0,0,0 -"access_project_vs_hours_system","project.vs.hours.system","model_project_vs_hours","base.group_system",1,0,0,0 "access_project_task_sale_user","project.task salesman","model_project_task","base.group_sale_salesman",1,0,0,0 "access_project_project_sale_user","project.project salesman","model_project_project","base.group_sale_salesman",1,0,0,0 -"access_project_project_project_financial_user","project.project.project.financial.user","model_project_project","group_project_finance_user",1,0,0,0 -"access_project_task_project_financial_user","project.task.project.financial.user","model_project_task","group_project_finance_user",1,0,0,0 -"access_project_task_work_project_financial_user","project.task.work.project.financial.user","model_project_task_work","group_project_finance_user",1,0,0,0 -"access_report_project_task_user_project_financial_user","report.project.task.user.project.financial.user","model_report_project_task_user","group_project_finance_user",1,0,0,0 -"access_project_board_project_financial_user","board.board.project.financial.user","board.model_board_board","group_project_finance_user",1,0,0,0 -"access_account_analytic_account_project_financial_user","account.analytic.account.project.financial.user","analytic.model_account_analytic_account","group_project_finance_user",1,0,0,0 -"access_project_task_type_project_financial_user","project.task.type.project.financial.user","model_project_task_type","group_project_finance_user",1,0,0,0 -"access_project_vs_hours_project_financial_user","project.vs.hours.project.financial.user","model_project_vs_hours","group_project_finance_user",1,0,0,0 \ No newline at end of file diff --git a/addons/project/security/project_security.xml b/addons/project/security/project_security.xml index 97453dcb33b61c63b77495c6d5ad7bc68b9e65b4..e77b1f338d10f9d6d6a60caa979cfaaf134165a5 100644 --- a/addons/project/security/project_security.xml +++ b/addons/project/security/project_security.xml @@ -2,14 +2,6 @@ <openerp> <data noupdate="1"> - <record id="group_project_finance" model="res.groups"> - <field name="name">Project / Financial Manager</field> - </record> - - <record id="group_project_finance_user" model="res.groups"> - <field name="name">Project / Financial User</field> - </record> - <record id="group_project_manager" model="res.groups"> <field name="name">Project / Manager</field> </record> diff --git a/addons/project/test/test_project.yml b/addons/project/test/test_project.yml index bc65ab67f770f01aedaee202b5eb8026b9d79296..8cf8e0afb19e38b822f69a3eb55fd0c7f94f90d5 100644 --- a/addons/project/test/test_project.yml +++ b/addons/project/test/test_project.yml @@ -65,10 +65,6 @@ - !assert {model: project.project, id: project_project_openerptrainingprogramme0, severity: error, string: Project is in open state}: - state == "open" - - - - - Test for different project-states - @@ -109,8 +105,6 @@ - !assert {model: project.project, id: project_project_openerptrainingprogramme0, severity: error, string: Project is in open state}: - state == "open" - - - Test for task work allocation - @@ -140,7 +134,7 @@ - Make a work task entry 'Training on OpenERP modules, models and classes' of 10 hours - - !record {model: project.task, id: project_task_technicaltraining0, context: {'withoutemployee': True}}: + !record {model: project.task, id: project_task_technicaltraining0}: work_ids: - date: '2010-05-31 15:04:22' hours: 10.0 @@ -155,7 +149,7 @@ - Make a work task entry 'Training on OpenERP xml views' of 10 hours - - !record {model: project.task, id: project_task_technicaltraining0, context: {'withoutemployee': True}}: + !record {model: project.task, id: project_task_technicaltraining0}: work_ids: - date: '2010-06-01 15:04:46' hours: 10.0 @@ -170,7 +164,7 @@ - Make a work task entry 'Training on workflows' of 10 hours - - !record {model: project.task, id: project_task_technicaltraining0, context: {'withoutemployee': True}}: + !record {model: project.task, id: project_task_technicaltraining0}: work_ids: - date: '2010-06-02 15:05:24' hours: 10.0 @@ -206,7 +200,7 @@ - Make a work task entry 'Training on reports and wizards' of 10 hours - - !record {model: project.task, id: project_task_technicaltraining0, context: {'withoutemployee': True}}: + !record {model: project.task, id: project_task_technicaltraining0}: work_ids: - date: '2010-05-31 15:08:40' hours: 10.0 @@ -257,7 +251,7 @@ - Make a work task entry 'Training on yml' of 5 hours - - !record {model: project.task, id: project_task_technicaltraining0, context: {'withoutemployee': True}}: + !record {model: project.task, id: project_task_technicaltraining0}: work_ids: - date: '2010-05-31 16:55:27' hours: 5.0 diff --git a/addons/project_gtd/project_gtd.py b/addons/project_gtd/project_gtd.py index 092738d2cf696aa11b90503ba2b4603ab81d8aca..bac2f621f37690bdbb8582b34191fedbdb2794c5 100644 --- a/addons/project_gtd/project_gtd.py +++ b/addons/project_gtd/project_gtd.py @@ -29,7 +29,7 @@ class project_gtd_context(osv.osv): _name = "project.gtd.context" _description = "Context" _columns = { - 'name': fields.char('Context', size=64, required=True, select=1), + 'name': fields.char('Context', size=64, required=True, select=1, translate=1), 'sequence': fields.integer('Sequence', help="Gives the sequence order when displaying a list of contexts."), } _defaults = { @@ -44,7 +44,7 @@ class project_gtd_timebox(osv.osv): _name = "project.gtd.timebox" _order = "sequence" _columns = { - 'name': fields.char('Timebox', size=64, required=True, select=1), + 'name': fields.char('Timebox', size=64, required=True, select=1, translate=1), 'sequence': fields.integer('Sequence', help="Gives the sequence order when displaying a list of timebox."), 'icon': fields.selection(tools.icons, 'Icon', size=64), } @@ -104,9 +104,10 @@ class project_task(osv.osv): res = super(project_task,self).fields_view_get(cr, uid, view_id, view_type, context, toolbar=toolbar, submenu=submenu) search_extended = False timebox_obj = self.pool.get('project.gtd.timebox') - if res['type'] == 'search': + access_pool = self.pool.get('ir.model.access') + if (res['type'] == 'search') and access_pool.check_groups(cr, uid, "project_gtd.group_project_getting"): tt = timebox_obj.browse(cr, uid, timebox_obj.search(cr,uid,[])) - search_extended ='''<newline/><group col="%d" expand="1" string="%s" groups="project_gtd.group_project_getting">''' % (len(tt)+7,_('Getting Things Done')) + search_extended ='''<newline/><group col="%d" expand="%d" string="%s">''' % (len(tt)+7,1,_('Getting Things Done')) search_extended += '''<filter domain="[('timebox_id','=', False)]" context="{'set_editable':True,'set_visible':True,'gtd_visible':True,'user_invisible':True}" icon="gtk-new" help="Undefined Timebox" string="%s"/>''' % (_('Inbox'),) search_extended += '''<filter context="{'set_editable':True,'set_visible':True,'gtd_visible':True,'user_invisible':True}" icon="gtk-new" string="%s"/>''' % (_('GTD'),) search_extended += '''<separator orientation="vertical"/>''' diff --git a/addons/project_gtd/project_gtd_view.xml b/addons/project_gtd/project_gtd_view.xml index d80dd86a243c5b005417c1528dcaf4d06dd538f1..427bd7fd87e887a2cbc502e1d5d58f6c10aa15d3 100644 --- a/addons/project_gtd/project_gtd_view.xml +++ b/addons/project_gtd/project_gtd_view.xml @@ -28,9 +28,10 @@ <record model="ir.actions.act_window" id="open_gtd_context_tree"> <field name="name">Contexts</field> <field name="res_model">project.gtd.context</field> + <field name="help">Contexts are defined in the "Getting Things Done" methodology. It allows you to categorize your tasks according to the context in which they have to be done: at office, at home, when I take my car, etc.</field> </record> - <menuitem name="Contexts" id="menu_open_gtd_time_contexts" groups="group_project_getting,base.group_system,project.group_project_finance_user" + <menuitem name="Contexts" id="menu_open_gtd_time_contexts" groups="group_project_getting" parent="project.menu_tasks_config" action="open_gtd_context_tree"/> <record model="ir.ui.view" id="view_gtd_timebox_tree"> @@ -66,6 +67,7 @@ <field name="view_type">form</field> <field name="view_mode">tree,form</field> <field name="view_id" ref="view_gtd_timebox_tree"/> + <field name="help">Timeboxes are defined in the "Getting Things Done" methodology. It defines a period of time in order to categorize your tasks: today, this week, this month, long term.</field> </record> <menuitem name="Timeboxes" id="menu_open_gtd_time_timeboxes" parent="project.menu_tasks_config" action="open_gtd_timebox_tree"/> diff --git a/addons/project_gtd/security/ir.model.access.csv b/addons/project_gtd/security/ir.model.access.csv index 0986ea1570f82a37622ee4faf8afad0d3a573f30..0398fbfb0ee327dc3915f3044d31d06e7020a109 100644 --- a/addons/project_gtd/security/ir.model.access.csv +++ b/addons/project_gtd/security/ir.model.access.csv @@ -5,7 +5,3 @@ "access_project_gtd_timebox_user","project.gtd.timebox project user","model_project_gtd_timebox","project.group_project_user",1,0,0,0 "access_project_gtd_context_manager","project.gtd.context project manager","model_project_gtd_context","project.group_project_manager",1,1,1,1 "access_project_gtd_timebox_manager","project.gtd.timebox project manager","model_project_gtd_timebox","project.group_project_manager",1,1,1,1 -"access_project_gtd_context_system","project.gtd.context system","model_project_gtd_context","base.group_system",1,1,1,1 -"access_project_gtd_timebox_system","project.gtd.timebox system","model_project_gtd_timebox","base.group_system",1,1,1,1 -"access_project_gtd_context_finacial_user","project.gtd.context.financial.user","model_project_gtd_context","project.group_project_finance_user",1,0,0,0 -"access_project_gtd_timebox_finacial_user","project.gtd.timebox.financial.user","model_project_gtd_timebox","project.group_project_finance_user",1,0,0,0 \ No newline at end of file diff --git a/addons/project_issue/project_issue.py b/addons/project_issue/project_issue.py index 0e9807c865b1e3b131d339fdc81aa11b49dcc1e6..2887b25610d52d96240649b53d0129c235729aad 100644 --- a/addons/project_issue/project_issue.py +++ b/addons/project_issue/project_issue.py @@ -58,7 +58,7 @@ class project_issue(crm.crm_case, osv.osv): res = super(project_issue, self).case_open(cr, uid, ids, *args) self.write(cr, uid, ids, {'date_open': time.strftime('%Y-%m-%d %H:%M:%S')}) for (id, name) in self.name_get(cr, uid, ids): - message = _('Issue ') + " '" + name + "' "+ _("is Open.") + message = _("Issue '%s' has been opened.") % name self.log(cr, uid, id, message) return res @@ -73,7 +73,7 @@ class project_issue(crm.crm_case, osv.osv): res = super(project_issue, self).case_close(cr, uid, ids, *args) for (id, name) in self.name_get(cr, uid, ids): - message = _('Issue ') + " '" + name + "' "+ _("is Closed.") + message = _("Issue '%s' has been closed.") % name self.log(cr, uid, id, message) return res @@ -401,8 +401,6 @@ class project_issue(crm.crm_case, osv.osv): vals.update(res) context.update({'state_to' : 'draft'}) res = self.create(cr, uid, vals, context) - message = _('An Issue created') + " '" + subject + "' " + _("from Mailgate.") - self.log(cr, uid, res, message) self.convert_to_bug(cr, uid, [res], context=context) attachents = msg.get('attachments', []) diff --git a/addons/project_issue/project_issue_menu.xml b/addons/project_issue/project_issue_menu.xml index 89c3085c2cf3a01247c2ded8d067b4e6b9a7d752..518fc37056a61ba71b02b898eea13f1486c0db23 100644 --- a/addons/project_issue/project_issue_menu.xml +++ b/addons/project_issue/project_issue_menu.xml @@ -15,7 +15,7 @@ <field name="domain" eval=""/> <field name="context">{"search_default_user_id": uid, "search_default_current":1, "search_default_project_id":project_id}</field> <field name="search_view_id" ref="view_project_issue_filter"/> - <field name="help">Issues like bugs in a system, client complain, materials breakdown are collected here. A list view allows the manager to quickly check for them, assign them, make their status evolved.</field> + <field name="help">Issues such as system bugs, client complains, material breakdowns are collected here. You can define the stages assigned to the resolution of the issue on the project. (analysis, development, done) Using the mailgateway module, the issues can be integrated to an email address (example: support@mycompany.com)</field> </record> <record model="ir.actions.act_window.view" id="action_crm_tag_tree_view0"> diff --git a/addons/project_issue/project_issue_view.xml b/addons/project_issue/project_issue_view.xml index d9ca4b04e081746fea915541f6c867ecac076422..3894740f0f1255d6fed290e1f740f266dfd92ca0 100644 --- a/addons/project_issue/project_issue_view.xml +++ b/addons/project_issue/project_issue_view.xml @@ -2,7 +2,7 @@ <openerp> <data> - <menuitem id="menu_project_confi" name="Project Issue" parent="project.menu_definitions" sequence="2" groups="base.group_system,project.group_project_finance_user"/> + <menuitem id="menu_project_confi" name="Project Issue" parent="project.menu_definitions" sequence="2"/> <record model="ir.ui.view" id="project_issue_version_search_view"> <field name="name">Issue Version</field> @@ -30,6 +30,7 @@ <field name="name">Versions</field> <field name="res_model">project.issue.version</field> <field name="view_type">form</field> + <field name="help">You can use the issues tracker in OpenERP to handle bugs in the software development project, to handle claims in after-sales services, etc. Define here the different versions of your products on which you can work on issues.</field> </record> <menuitem action="project_issue_version_action" id="menu_project_issue_version_act" parent="menu_project_confi" /> diff --git a/addons/project_issue/report/project_issue_report_view.xml b/addons/project_issue/report/project_issue_report_view.xml index ea864cd152b97aff27fbe81cf44e8d652a43ffc3..5a8c4886d2f630d9ec03262d6e405627c1b99b39 100644 --- a/addons/project_issue/report/project_issue_report_view.xml +++ b/addons/project_issue/report/project_issue_report_view.xml @@ -159,7 +159,7 @@ <field name="context">{'search_default_This Month':1,'search_default_project':1,'group_by_no_leaf':1,'group_by':[]}</field> <field name="view_id" ref="view_project_issue_report_tree"/> <field name="search_view_id" ref="view_project_issue_report_filter"/> - <field name="help">Track your projects issues and fixing delay with a high accuracy. A multicriteria search tool allows fine-grained analysis.</field> + <field name="help">This report on the project issues allows you to analyse the quality of your support or after-sales services. You can track the issues per age. You can analyse the time required to open or close an issue, the number of email to exchange and the time spent on average by issues.</field> </record> @@ -177,7 +177,7 @@ </record> <menuitem icon="terp-project" id="base.menu_main_pm" name="Project" sequence="10"/> <menuitem id="base.menu_project_report" name="Reporting" parent="base.menu_main_pm" sequence="50"/> - <menuitem action="action_project_issue_report" id="menu_project_issue_report_tree" parent="base.menu_project_report" groups="project.group_project_manager,project.group_project_finance_user"/> + <menuitem action="action_project_issue_report" id="menu_project_issue_report_tree" parent="base.menu_project_report" groups="project.group_project_manager"/> </data> diff --git a/addons/project_issue/security/ir.model.access.csv b/addons/project_issue/security/ir.model.access.csv index b113853cbd256826b6d1f806a9d6c9cf339108a6..f5602f5ae4b968a59869aba3c838318cba270763 100755 --- a/addons/project_issue/security/ir.model.access.csv +++ b/addons/project_issue/security/ir.model.access.csv @@ -8,17 +8,7 @@ "access_crm_case_categ_supp","crm.case.categ","crm.model_crm_case_categ","project_issue.group_project_supporter",1,0,0,0 "access_project_issue_version_project","project_issue_version manager","model_project_issue_version","project.group_project_manager",1,1,1,1 "access_project_issue_version","project_issue_version manager","model_project_issue_version","project_issue.group_project_supporter",1,0,0,0 -"access_project_issue_system","project.issue system","model_project_issue","base.group_system",1,0,0,0 -"access_project_issue_report_system","project.issue.report system","model_project_issue_report","base.group_system",1,0,0,0 -"access_crm_case_section_system","crm.case.section system","crm.model_crm_case_section","base.group_system",1,1,1,1 -"access_project_issue_version_financial_user","project.issue.version.financial.user","model_project_issue_version","project.group_project_finance_user",1,0,0,0 -"access_crm_case_categ_financial_user","crm.case.categ.financial.user","crm.model_crm_case_categ","project.group_project_finance_user",1,0,0,0 -"access_crm_case_stage_financial_user","crm.case.stage.financial.user","crm.model_crm_case_stage","project.group_project_finance_user",1,0,0,0 -"access_project_issue_report_financial_user","project.issue.report.financial.user","model_project_issue_report","project.group_project_finance_user",1,0,0,0 -"access_project_issue_board_project_financial_user","board.board.project.issue.financial.user","board.model_board_board","project.group_project_finance_user",1,0,0,0 -"access_project_issue_project_financial_user","project.issue.financial.user","model_project_issue","project.group_project_finance_user",1,0,0,0 -"access_mailgate_message_project_financial_user","mailgate.message.financial.user","mail_gateway.model_mailgate_message","project.group_project_finance_user",1,0,0,0 "access_mailgate_message_project_manager","mailgate.message.manager","mail_gateway.model_mailgate_message","project.group_project_manager",1,1,1,1 "access_resource_calendar_project_manager","resource.calendar.project.manager","resource.model_resource_calendar","project.group_project_manager",1,1,1,1 "access_project_issue_report_user","project.issue.report user","model_project_issue_report","project.group_project_user",1,1,1,0 -"access_mailgate_message_issue_project_user","project.mailgate.message.issue.user","mail_gateway.model_mailgate_message","project.group_project_user",1,1,1,0 \ No newline at end of file +"access_mailgate_message_issue_project_user","project.mailgate.message.issue.user","mail_gateway.model_mailgate_message","project.group_project_user",1,1,1,0 diff --git a/addons/project_issue_sheet/security/ir.model.access.csv b/addons/project_issue_sheet/security/ir.model.access.csv index 25bcbe03ccd73ba372302395121a04b8a0e65f9e..0e6c92c038ba2cc36facee071742add3854a355f 100644 --- a/addons/project_issue_sheet/security/ir.model.access.csv +++ b/addons/project_issue_sheet/security/ir.model.access.csv @@ -3,13 +3,6 @@ "access_hr_analytic_timesheet_project_user","hr_analytic_timesheet user","hr_timesheet_sheet.model_hr_analytic_timesheet","project.group_project_user",1,1,1,0 "access_hr_analytic_timesheet_project_manager","hr_analytic_timesheet manager","hr_timesheet_sheet.model_hr_analytic_timesheet","project.group_project_manager",1,0,0,0 "access_hr_timesheet_sheet_sheet_project_manager","hr_timesheet_sheet.sheet manager","hr_timesheet_sheet.model_hr_timesheet_sheet_sheet","project.group_project_manager",1,0,0,0 -"access_hr_analytic_timesheet_system","hr_analytic_timesheet system","hr_timesheet_sheet.model_hr_analytic_timesheet","base.group_system",1,0,0,0 -"access_hr_timesheet_sheet_sheet_project_system","hr_timesheet_sheet.sheet system","hr_timesheet_sheet.model_hr_timesheet_sheet_sheet","base.group_system",1,0,0,0 -"access_hr_analytic_timesheet_project_financial_user","account.analytic.line.timesheet.project.financial.user","account.model_account_analytic_line","project.group_project_finance_user",1,1,1,0 -"access_account_analytic_journal_project_financial_user","account.analytic.journal.project.financial.user","account.model_account_analytic_journal","project.group_project_finance_user",1,1,1,0 -"access_account_fiscalyear_project_financial_user","account.fiscalyear.project.financial.user","account.model_account_fiscalyear","project.group_project_finance_user",1,1,1,0 -"access_hr_timesheet_invoice_factor_project_financial_user","hr_timesheet_invoice.factor.project.financial.user","hr_timesheet_invoice.model_hr_timesheet_invoice_factor","project.group_project_finance_user",1,1,1,0 -"access_account_invoice_project_financial_user","account.invoice.project.financial.user","account.model_account_invoice","project.group_project_finance_user",1,1,1,0 "access_hr_analytic_timesheet_project_manager","account.analytic.line.timesheet.project.manager","account.model_account_analytic_line","project.group_project_manager",1,1,1,1 "access_account_analytic_journal_project_manager","account.analytic.journal.project.manager","account.model_account_analytic_journal","project.group_project_manager",1,1,1,1 "access_account_fiscalyear_project_manager","account.fiscalyear.project.manager","account.model_account_fiscalyear","project.group_project_manager",1,1,1,1 diff --git a/addons/project_long_term/project_long_term_view.xml b/addons/project_long_term/project_long_term_view.xml index 1ca78537340c127c288fc98ea6205dbf19f19487..71e965432327a13ad94369bcee28f356862ed122 100644 --- a/addons/project_long_term/project_long_term_view.xml +++ b/addons/project_long_term/project_long_term_view.xml @@ -289,7 +289,7 @@ <field name="view_mode">gantt,tree,form,calendar</field> <field name="context">{'search_default_responsible_id':uid,'search_default_project':1}</field> <field name="search_view_id" ref="view_project_phase_search"/> - <field name="help">You can subdivide your larger projects into several phases. For each phase, you can define your resources allocation (humans or engine), describe de differend task and link your phase with previous and next one, add constraints date and scheduling. A gantt view of your project phase is also available from this menu. Gantt view is a graphically draw of the project plan; it includes any task dependencies by visually adjusting task durations and priorities, and by linking tasks to each other.</field> + <field name="help">A project can be split into the different phases. For each phase, you can define your resources allocation, describe different tasks and link your phase to previous and next ones, add date constraints for the automated scheduling. Use the long term planning in order to planify your available human resources, convert your phases into a series of tasks when you start working on it.</field> </record> <record id="act_project_phase_list" model="ir.actions.act_window"> @@ -379,10 +379,10 @@ name="Resource Allocations" parent="base.menu_project_long_term" sequence="2"/> <menuitem id="menu_pm_resources_project1" - groups="base.group_extended,project.group_project_finance_user" + groups="base.group_extended" name="Resources" parent="project.menu_definitions" sequence="3"/> - <menuitem id="menu_phase_schedule" name="Scheduling" parent="base.menu_main_pm" sequence="4" groups="project.group_project_user,project.group_project_manager,base.group_system,project.group_project_finance_user"/> + <menuitem id="menu_phase_schedule" name="Scheduling" parent="base.menu_main_pm" sequence="4" groups="project.group_project_user,project.group_project_manager"/> <menuitem action="resource.action_resource_resource_tree" id="menu_view_resource" parent="menu_pm_resources_project1" sequence="2"/> <menuitem action="resource.action_resource_calendar_form" id="menu_view_resource_calendar" parent="menu_pm_resources_project1" sequence="1"/> <menuitem action="resource.action_resource_calendar_leave_tree" id="menu_view_resource_calendar_leaves" parent="menu_pm_resources_project1" sequence="1"/> diff --git a/addons/project_long_term/security/ir.model.access.csv b/addons/project_long_term/security/ir.model.access.csv index 08297cee95d9e7b5f78a592d800fb0526591f88d..3aaebb64294bb8cdbf2d8501e90b4cbc887fafb6 100644 --- a/addons/project_long_term/security/ir.model.access.csv +++ b/addons/project_long_term/security/ir.model.access.csv @@ -3,14 +3,7 @@ "access_project_resource_allocation","project.resource.allocation","model_project_resource_allocation","project.group_project_user",1,0,0,0 "access_project_phase_manager","project.phase manager","model_project_phase","project.group_project_manager",1,0,0,0 "access_project_resource_allocation_manager","project.resource.allocation manager","model_project_resource_allocation","project.group_project_manager",1,0,0,0 -"access_project_resource_allocation_system","project.resource.allocation system","model_project_resource_allocation","base.group_system",1,0,0,0 -"access_project_phase_system","project.phase system","model_project_phase","base.group_system",1,0,0,0 "access_resource_resource_user","resource.resource user","resource.model_resource_resource","project.group_project_user",1,0,0,0 "access_resource_calendar_leaves_user","resource.calendar.leaves user","resource.model_resource_calendar_leaves","project.group_project_user",1,1,1,1 "access_resource_resource_manager","resource.resource manager","resource.model_resource_resource","project.group_project_manager",1,1,1,1 -"access_project_resource_allocation_financial_user","project.resource.allocation.financial.user","model_project_resource_allocation","project.group_project_finance_user",1,0,0,0 -"access_project_phase_financial_user","project.phase.financial.user","model_project_phase","project.group_project_finance_user",1,0,0,0 -"access_resource_resource_financial_user","resource.resource.financial.user","model_resource_resource","project.group_project_finance_user",1,0,0,0 -"access_resource_calendar_financial_user","resource.calendar.financial.user","resource.model_resource_calendar","project.group_project_finance_user",1,0,0,0 -"access_resource_calendar_financial_user","resource.calendar.financial.user","resource.model_resource_calendar_leaves","project.group_project_finance_user",1,0,0,0 -"access_project_resource_allocation_manager","project.resource.allocation.manager","model_project_resource_allocation","project.group_project_manager",1,1,1,1 \ No newline at end of file +"access_project_resource_allocation_manager","project.resource.allocation.manager","model_project_resource_allocation","project.group_project_manager",1,1,1,1 diff --git a/addons/project_mailgate/project_mailgate.py b/addons/project_mailgate/project_mailgate.py index 9b6b7d77f7b5992279d96b79cee3baa2e9582393..c232b41fe767f1505b8c0f7bbabafc95f63a3a50 100644 --- a/addons/project_mailgate/project_mailgate.py +++ b/addons/project_mailgate/project_mailgate.py @@ -54,9 +54,6 @@ class project_tasks(osv.osv): data.update(res) res = self.create(cr, uid, data) - message = _('A task created') + " '" + subject + "' " + _("from Mailgate.") - self.log(cr, uid, res, message) - attachments = msg.get('attachments', []) for attachment in attachments or []: data_attach = { diff --git a/addons/project_messages/security/ir.model.access.csv b/addons/project_messages/security/ir.model.access.csv index e31ffd860cb51bd77d22adec820f69af14ddde35..5756a7456bb5e14eb86b9b420abb23911f493a1b 100644 --- a/addons/project_messages/security/ir.model.access.csv +++ b/addons/project_messages/security/ir.model.access.csv @@ -1,5 +1,4 @@ "id","name","model_id:id","group_id:id","perm_read","perm_write","perm_create","perm_unlink" "access_project_messages","project.messages","model_project_messages","project.group_project_user",1,1,1,1 "access_project_messages_manager","project.messages manager","model_project_messages","project.group_project_manager",1,1,1,1 -"access_project_messages_financial_user","project.messages.financial.user","model_project_messages","project.group_project_finance_user",1,0,0,0 "access_project_message_project_user","project.project.user","model_project_project","project.group_project_user",1,0,0,0 diff --git a/addons/project_planning/project_planning_view.xml b/addons/project_planning/project_planning_view.xml index 5c8d4cc5af92e74631fed79d4bd5e39295f38966..9abff817d17065da518dae62e2364e525ffc971b 100644 --- a/addons/project_planning/project_planning_view.xml +++ b/addons/project_planning/project_planning_view.xml @@ -219,7 +219,7 @@ parent="base.menu_main_pm" /> <menuitem action="action_account_analytic_planning_form" - id="menu_report_account_analytic_planning" parent="base.menu_project_long_term" sequence="3" groups="project.group_project_user,project.group_project_manager,base.group_system,project.group_project_finance_user"/> + id="menu_report_account_analytic_planning" parent="base.menu_project_long_term" sequence="3" groups="project.group_project_user,project.group_project_manager"/> <!-- Planning statistics diff --git a/addons/project_planning/security/ir.model.access.csv b/addons/project_planning/security/ir.model.access.csv index 2c6c92db8ff704366b2c33845d9039a0811290ed..d5cb64be83da0714f182165950761751895cebe2 100644 --- a/addons/project_planning/security/ir.model.access.csv +++ b/addons/project_planning/security/ir.model.access.csv @@ -8,8 +8,4 @@ "access_report_account_analytic_planning_account_project_manager","report_account_analytic.planning.account","model_report_account_analytic_planning_account","project.group_project_manager",1,1,1,1 "access_report_account_analytic_planning_line_project_user","report_account_analytic.planning.line user","model_report_account_analytic_planning_line","project.group_project_user",1,1,1,0 "access_report_account_analytic_planning_account_project_user","report_account_analytic.planning.account user","model_report_account_analytic_planning_account","project.group_project_user",1,1,1,0 -"access_report_account_analytic_planning_system","report_account_analytic.planning system","model_report_account_analytic_planning","base.group_system",1,0,0,0 -"access_report_account_analytic_planning_financial_user","report_account_analytic.planning.financial.user","model_report_account_analytic_planning","project.group_project_finance_user",1,0,0,0 -"access_report_account_analytic_planning_stat_financial_user","report_account_analytic.planning.stat.financial.user","model_report_account_analytic_planning_stat","project.group_project_finance_user",1,0,0,0 "access_report_account_analytic_planning__project_manager","report_account_analytic.planning.manager","model_report_account_analytic_planning_user","project.group_project_manager",1,1,1,1 -"access_report_account_analytic_planning__project_finance_user","report_account_analytic.planning.finance.user","model_report_account_analytic_planning_user","project.group_project_finance_user",1,0,0,0 \ No newline at end of file diff --git a/addons/project_scrum/project_scrum.py b/addons/project_scrum/project_scrum.py index e02e16c478bbc7d18966938650b91b1084a9cedd..82395c3eb3534cefdc48bc267ea1809fb2d1cc2c 100644 --- a/addons/project_scrum/project_scrum.py +++ b/addons/project_scrum/project_scrum.py @@ -86,7 +86,7 @@ class project_scrum_sprint(osv.osv): context = {} self.write(cr, uid, ids, {'state':'open'}, context=context) for (id, name) in self.name_get(cr, uid, ids): - message = _('Sprint ') + " '" + name + "' "+ _("is Open.") + message = _("The sprint '%s' has been opened.") % (name,) self.log(cr, uid, id, message) return True @@ -95,7 +95,7 @@ class project_scrum_sprint(osv.osv): context = {} self.write(cr, uid, ids, {'state':'done'}, context=context) for (id, name) in self.name_get(cr, uid, ids): - message = _('Sprint ') + " '" + name + "' "+ _("is Closed.") + message = _("The sprint '%s' has been closed.") % (name,) self.log(cr, uid, id, message) return True @@ -214,9 +214,6 @@ class project_scrum_product_backlog(osv.osv): if context is None: context = {} self.write(cr, uid, ids, {'state':'open'}, context=context) - for (id, name) in self.name_get(cr, uid, ids): - message = _('Product Backlog ') + " '" + name + "' "+ _("is Open.") - self.log(cr, uid, id, message) return True def button_close(self, cr, uid, ids, context=None): @@ -226,8 +223,6 @@ class project_scrum_product_backlog(osv.osv): self.write(cr, uid, ids, {'state':'done'}, context=context) for backlog in self.browse(cr, uid, ids, context=context): obj_project_task.write(cr, uid, [i.id for i in backlog.tasks_id], {'state': 'done'}) - message = _('Product Backlog ') + " '" + backlog.name + "' "+ _("is Closed.") - self.log(cr, uid, backlog.id, message) return True def button_pending(self, cr, uid, ids, context=None): diff --git a/addons/project_scrum/project_scrum_view.xml b/addons/project_scrum/project_scrum_view.xml index 0c91348c91066bf91d8c2f6b8210db9b7aeed49c..6978f09c8f66892fc5dd880ba22c9edcc9754d31 100644 --- a/addons/project_scrum/project_scrum_view.xml +++ b/addons/project_scrum/project_scrum_view.xml @@ -181,6 +181,7 @@ <field name="view_type">form</field> <field name="context">{'search_default_current': 1,'search_default_user_id':uid,'search_default_project_id':project_id}</field> <field name="search_view_id" ref="view_scrum_product_backlog_search"/> + <field name="help">The scrum agile methodology is used in software development projects. The Product Backlog is the list of features to be implemented. A product backlog can be planified in a sprint of developement and can be split into several tasks. The product backlog is managed by the product owner of the project.</field> </record> <menuitem action="action_product_backlog_form" @@ -350,6 +351,7 @@ <field name="view_id" ref="view_scrum_sprint_tree"/> <field name="context">{"search_default_filter_current": 1}</field> <field name="search_view_id" ref="view_scrum_sprint_search"/> + <field name="help">The scrum agile methodology is used in software development projects. In this methodology, a sprint is a short period of time (one month) on which the team implement a list of product backlogs. The sprint review is organized when the team presents his work to the customer and product owner.</field> </record> <menuitem sequence="20" @@ -448,6 +450,7 @@ <field name="view_mode">tree,form,calendar</field> <field name="context">{'search_default_scrum_daily':1,'search_default_project_id':project_id}</field> <field name="search_view_id" ref="view_scrum_meeting_search"/> + <field name="help">The scrum agile methodology is used in software development projects. In this methodology, a daily meeting is organized by the scrum master with his team in order to detect the difficulties the team faced/will face.</field> </record> <menuitem sequence="30" action="action_meeting_form" id="menu_action_meeting_form" parent="menu_scrum"/> diff --git a/addons/project_scrum/security/ir.model.access.csv b/addons/project_scrum/security/ir.model.access.csv index 385996447516fc635b1cd00d57ba271c2c6b276a..88e8c506e14ba77ab1bd79285f08a72dbd491c56 100644 --- a/addons/project_scrum/security/ir.model.access.csv +++ b/addons/project_scrum/security/ir.model.access.csv @@ -7,9 +7,3 @@ "access_scrum_product_backlog_manager","project_scrum.product.backlog manager","model_project_scrum_product_backlog","project.group_project_manager",1,1,1,1 "access_product_uom_project_manager","product.uom project manager","product.model_product_uom","project.group_project_manager",1,1,1,1 "access_product_uom_project_user","product.uom project user","product.model_product_uom","project.group_project_user",1,0,0,0 -"access_scrum_sprint_system","project_scrum.sprint system","model_project_scrum_sprint","base.group_system",1,0,0,0 -"access_scrum_product_backlog_system","project_scrum.product.backlog system","model_project_scrum_product_backlog","base.group_system",1,0,0,0 -"access_scrum_meeting_system","project_scrum.meeting system","model_project_scrum_meeting","base.group_system",1,0,0,0 -"access_project_scrum_backlog_financial_user","project_scrum.product.backlog.financial.user","model_project_scrum_product_backlog","project.group_project_finance_user",1,0,0,0 -"access_project_scrum_sprint_financial_user","project_scrum.sprint.financial.user","model_project_scrum_sprint","project.group_project_finance_user",1,0,0,0 -"access_scrum_meeting_financial_user","project_scrum.meeting.financial.user","model_project_scrum_meeting","project.group_project_finance_user",1,0,0,0 \ No newline at end of file diff --git a/addons/project_timesheet/project_timesheet.py b/addons/project_timesheet/project_timesheet.py index f5480793adc285816a659c260da738e43b548d05..601fbfa578bf8195b91d9d497bebfff81f35e526 100644 --- a/addons/project_timesheet/project_timesheet.py +++ b/addons/project_timesheet/project_timesheet.py @@ -26,6 +26,20 @@ import pooler import tools from tools.translate import _ +class project_project(osv.osv): + _inherit = 'project.project' + def onchange_partner_id(self, cr, uid, ids, part=False, context=None): + result = super(project_project, self).onchange_partner_id(cr, uid, ids, part, context) + if result.get('value', False): + try: + d = self.pool.get('ir.model.data').get_object_reference(cr, uid, 'hr_timesheet_invoice', 'timesheet_invoice_factor1') + if d: + result['value']['to_invoice'] = d[1] + except ValueError, e: + pass + return result +project_project() + class project_work(osv.osv): _inherit = "project.task.work" @@ -66,10 +80,7 @@ class project_work(osv.osv): vals_line = {} context = kwargs.get('context', {}) - #TOFIX: after loading project_timesheet module, it's fail yml of other project* modules. - #Temporary: pass context['withoutemployee'] = True in all yml. - if 'withoutemployee' in context and context['withoutemployee']: - return super(project_work,self).create(cr, uid, vals, context=context) + obj_task = task_obj.browse(cr, uid, vals['task_id']) result = self.get_user_related_details(cr, uid, vals.get('user_id', uid)) vals_line['name'] = '%s: %s' % (tools.ustr(obj_task.name), tools.ustr(vals['name']) or '/') @@ -79,7 +90,8 @@ class project_work(osv.osv): #calculate quantity based on employee's product's uom vals_line['unit_amount'] = vals['hours'] - user_uom, default_uom = project_obj._get_user_and_default_uom_ids(cr, uid) + + default_uom = self.pool.get('res.users').browse(cr, uid, uid).company_id.project_time_mode_id.id if result['product_uom_id'] != default_uom: vals_line['unit_amount'] = uom_obj._compute_qty(cr, uid, default_uom, vals['hours'], result['product_uom_id']) acc_id = obj_task.project_id and obj_task.project_id.analytic_account_id.id or False @@ -136,7 +148,7 @@ class project_work(osv.osv): if 'date' in vals: vals_line['date'] = vals['date'][:10] if 'hours' in vals: - user_uom, default_uom = project_obj._get_user_and_default_uom_ids(cr, uid) + default_uom = self.pool.get('res.users').browse(cr, uid, uid).company_id.project_time_mode_id.id vals_line['unit_amount'] = vals['hours'] prod_id = vals_line.get('product_id', line_id.product_id.id) # False may be set @@ -145,13 +157,13 @@ class project_work(osv.osv): # Compute based on pricetype amount_unit = timesheet_obj.on_change_unit_amount(cr, uid, line_id.id, - prod_id=prod_id, - quantity=vals_line['unit_amount'], unit=False, context=context) + prod_id=prod_id, company_id=False, + unit_amount=vals_line['unit_amount'], unit=False, context=context) if amount_unit and 'amount' in amount_unit.get('value',{}): vals_line['amount'] = amount_unit['value']['amount'] - obj.write(cr, uid, [line_id.id], vals_line, context=context) + self.pool.get('hr.analytic.timesheet').write(cr, uid, [line_id.id], vals_line, context=context) return super(project_work,self).write(cr, uid, ids, vals, context) diff --git a/addons/project_timesheet/project_timesheet_view.xml b/addons/project_timesheet/project_timesheet_view.xml index 05be6d5466ee1e9e7511797c3ab7bc8629a5c40d..5ceaf83890e760800286cc7ee3c1495e2fa9e5e1 100644 --- a/addons/project_timesheet/project_timesheet_view.xml +++ b/addons/project_timesheet/project_timesheet_view.xml @@ -27,16 +27,16 @@ <field name="arch" type="xml"> <xpath expr='//filter[@string="Member"]' position='after'> <separator orientation="vertical"/> - <filter icon="terp-camera_test" string="Billable" domain="[('to_invoice','!=', False)]" help="Billable Project"/> + <filter icon="terp-camera_test" string="Invoiceble" domain="[('to_invoice','!=', False)]" help="Invoiceable Project"/> </xpath> </field> </record> - <menuitem id="menu_project_billing" name="Billing" + <menuitem id="menu_project_billing" name="Invoicing" parent="base.menu_main_pm" sequence="5"/> - <menuitem id="menu_project_billing_line" name="Bill Tasks Work" + <menuitem id="menu_project_billing_line" name="Invoice Tasks Work" parent="menu_project_billing" action="hr_timesheet_invoice.action_hr_analytic_timesheet_open_tree"/> <menuitem id="base.menu_project_management_time_tracking" name="Time Tracking" - parent="base.menu_main_pm" sequence="5" groups="project.group_project_finance_user"/> + parent="base.menu_main_pm" sequence="5"/> </data> </openerp> diff --git a/addons/project_timesheet/security/ir.model.access.csv b/addons/project_timesheet/security/ir.model.access.csv index 8f10009fa12e0789be7fc93dd2c09d0be35c72e5..4888811df2f9343e7b8c295253e4bfee256e9ce7 100644 --- a/addons/project_timesheet/security/ir.model.access.csv +++ b/addons/project_timesheet/security/ir.model.access.csv @@ -2,7 +2,3 @@ "access_report_timesheet_task_user_manager","report.timesheet.task.user.manager","model_report_timesheet_task_user","project.group_project_manager",1,1,1,1 "access_hr_analytic_timesheet_user","hr.analytic.timesheet.user","hr_timesheet_sheet.model_hr_analytic_timesheet","project.group_project_user",1,1,1,0 "access_hr_timesheet_sheet_sheet_user","hr.timesheet.sheet.sheet.user","hr_timesheet_sheet.model_hr_timesheet_sheet_sheet","project.group_project_user",1,1,1,0 -"access_hr_analytic_timesheet_system","hr.analytic.timesheet.system","hr_timesheet_sheet.model_hr_analytic_timesheet","base.group_system",1,1,1,1 -"access_hr_timesheet_sheet_sheet_system","hr.timesheet.sheet.sheet.system","hr_timesheet_sheet.model_hr_timesheet_sheet_sheet","base.group_system",1,1,1,1 -"access_project_timesheet_project_financial_user","hr_timesheet_sheet.sheet.project.financial.user","hr_timesheet_sheet.model_hr_timesheet_sheet_sheet","project.group_project_finance_user",1,1,1,0 -"access_report_timesheet_task_user_financial_user","report.timesheet.task.user.financial.user","model_report_timesheet_task_user","project.group_project_finance_user",1,0,0,0 diff --git a/addons/purchase/board_purchase_view.xml b/addons/purchase/board_purchase_view.xml index ffcd14213f20a2fd1567684f9e7d51b262590f64..283941029223fe047881ab6f082ad2346d5f1816 100644 --- a/addons/purchase/board_purchase_view.xml +++ b/addons/purchase/board_purchase_view.xml @@ -156,7 +156,6 @@ id="menu_board_purchase" parent="menu_purchase_deshboard" sequence="4"/> - <menuitem icon="terp-purchase" id="base.menu_purchase_root" name="Purchases" sequence="3" groups="base.group_system,group_purchase_manager,group_purchase_user,base.group_extended" action="open_board_purchase"/> </data> </openerp> diff --git a/addons/purchase/i18n/ru.po b/addons/purchase/i18n/ru.po index ab3c213f91d0f4c02b2eed2475eb157a3c923ddd..6fbade8ce735ceefd47728ea0d4d1c73f2c4241d 100644 --- a/addons/purchase/i18n/ru.po +++ b/addons/purchase/i18n/ru.po @@ -7,13 +7,13 @@ msgstr "" "Project-Id-Version: OpenERP Server 6.0dev\n" "Report-Msgid-Bugs-To: support@openerp.com\n" "POT-Creation-Date: 2009-08-28 16:01+0000\n" -"PO-Revision-Date: 2010-09-30 06:38+0000\n" +"PO-Revision-Date: 2010-10-16 14:12+0000\n" "Last-Translator: Chertykov Denis <chertykov@gmail.com>\n" "Language-Team: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2010-10-01 08:47+0000\n" +"X-Launchpad-Export-Date: 2010-10-17 04:53+0000\n" "X-Generator: Launchpad (build Unknown)\n" #. module: purchase @@ -373,7 +373,7 @@ msgstr "ÐŸÐ»Ð°Ð½Ð¸Ñ€ÑƒÐµÐ¼Ð°Ñ Ð´Ð°Ñ‚Ð°" #. module: purchase #: view:purchase.order:0 msgid "Approved by Supplier" -msgstr "Утверждено поÑтавщком" +msgstr "Утверждено поÑтавщиком" #. module: purchase #: model:ir.actions.act_window,name:purchase.act_purchase_order_2_stock_picking diff --git a/addons/purchase/purchase.py b/addons/purchase/purchase.py index b288055faf33237d5415c563e1eca3d55e2a0ab1..57b9a477ac94a920889e0ebd03cc25b39bbb0572 100644 --- a/addons/purchase/purchase.py +++ b/addons/purchase/purchase.py @@ -270,9 +270,6 @@ class purchase_order(osv.osv): def wkf_approve_order(self, cr, uid, ids, context={}): self.write(cr, uid, ids, {'state': 'approved', 'date_approve': time.strftime('%Y-%m-%d')}) - for (id,name) in self.name_get(cr, uid, ids): - message = _('Purchase order ') + " '" + name + "' "+_("is approved by the supplier") - self.log(cr, uid, id, message) return True #TODO: implement messages system @@ -285,15 +282,12 @@ class purchase_order(osv.osv): for line in po.order_line: if line.state=='draft': todo.append(line.id) + message = _("Purchase order '%s' is confirmed.") % (po.name,) + self.log(cr, uid, po.id, message) current_name = self.name_get(cr, uid, ids)[0][1] self.pool.get('purchase.order.line').action_confirm(cr, uid, todo, context) for id in ids: self.write(cr, uid, [id], {'state' : 'confirmed', 'validator' : uid}) - for line in po.order_line: - product.append(line.product_id.default_code or '') - params = ', '.join(map(lambda x : str(x), product)) - message = _('Purchase order ') + " '" + po.name + "' "+_('placed on')+ " '" + po.date_order + "' "+_('for')+" '" + params + "' "+ _("is confirmed") - self.log(cr, uid, id, message) return True def wkf_warn_buyer(self, cr, uid, ids): @@ -336,8 +330,8 @@ class purchase_order(osv.osv): wf_service.trg_delete(uid, 'purchase.order', p_id, cr) wf_service.trg_create(uid, 'purchase.order', p_id, cr) for (id,name) in self.name_get(cr, uid, ids): - message = _('Purchase order') + " '" + name + "' "+ _("is in the draft state") - self.log(cr, uid, id, message) + message = _("Purchase order '%s' has been set in draft state.") % name + self.log(cr, uid, id, message) return True def action_invoice_create(self, cr, uid, ids, *args): @@ -417,8 +411,8 @@ class purchase_order(osv.osv): wf_service = netsvc.LocalService("workflow") wf_service.trg_validate(uid, 'account.invoice', inv.id, 'invoice_cancel', cr) self.write(cr,uid,ids,{'state':'cancel'}) - for (id,name) in self.name_get(cr, uid, ids): - message = _('Purchase order ') + " '" + purchase.name + "' "+ _("is cancelled") + for (id,name) in self.name_get(cr, uid, ids): + message = _("Purchase order '%s' is cancelled.") % name self.log(cr, uid, id, message) return True @@ -723,9 +717,6 @@ class purchase_order_line(osv.osv): def action_confirm(self, cr, uid, ids, context={}): self.write(cr, uid, ids, {'state': 'confirmed'}, context) - for (id,name) in self.name_get(cr, uid, ids): - message = _('Purchase order line') + " '" + name + "' "+ _("is confirmed") - self.log(cr, uid, id, message) return True purchase_order_line() diff --git a/addons/purchase/purchase_view.xml b/addons/purchase/purchase_view.xml index a9996202b20073cc9c5d1b52d9708b10bb0a58db..f825a11cac570599c7c8bb9eb1a049a89294dcbe 100644 --- a/addons/purchase/purchase_view.xml +++ b/addons/purchase/purchase_view.xml @@ -1,7 +1,8 @@ <?xml version="1.0" encoding="utf-8"?> <openerp> <data> - <menuitem icon="terp-purchase" id="base.menu_purchase_root" name="Purchases" sequence="3" groups="base.group_system,group_purchase_manager,group_purchase_user,base.group_extended"/> + <menuitem icon="terp-purchase" id="base.menu_purchase_root" name="Purchases" sequence="3" + groups="group_purchase_manager,group_purchase_user"/> <menuitem id="menu_procurement_management" name="Purchase Management" parent="base.menu_purchase_root" sequence="1" /> @@ -13,6 +14,7 @@ <field name="view_type">form</field> <field name="context">{"search_default_supplier":1}</field> <field name="search_view_id" ref="base.view_res_partner_address_filter"/> + <field name="help">Access your supplier records and maintain your relationship with them. You can track all your interactions with them through the history tab: emails, orders, meeting, etc.</field> </record> <record id="action_supplier_address_form_view1" model="ir.actions.act_window.view"> <field eval="10" name="sequence"/> @@ -55,7 +57,7 @@ <field name="domain">[('type','=','in_invoice')]</field> <field name="context">{'type':'in_invoice', 'journal_type': 'purchase', 'search_default_draft': 1}</field> <field name="search_view_id" ref="account.view_account_invoice_filter"/> - <field name="help">This is the list of supplier invoice you are waiting for. You can select invoices and validate them once you have received the invoice and checked his data.</field> + <field name="help">Use this menu to control the invoices to be received by your supplier. OpenERP pre-generates draft of invoices based on your purchase orders or your receptions. Once you receive a supplier invoice, you can control it according to the draft of invoice and validate it.</field> </record> <menuitem name="Supplier Invoices to Receive" @@ -239,7 +241,7 @@ <field name="context">{'search_default_draft': 1}</field> <field name="view_mode">tree,form,graph,calendar</field> <field name="search_view_id" ref="view_purchase_order_filter"/> - <field name="help">With the Requests for quotation menu you can create new quotations, review existing one and confirm them to order once the supplier offer is approved.</field> + <field name="help">With the Requests for quotation menu you can create new request for quotations, review existing one and confirm them to order once the supplier offer is approved. When you confirm a RfQ, OpenERP will convert it to a Purchase Order and generate the next steps: draft reception of the products, invoice to control.</field> </record> <menuitem action="purchase_rfq" id="menu_purchase_rfq" parent="menu_procurement_management" sequence="6" groups="group_purchase_manager,group_purchase_user"/> @@ -251,7 +253,8 @@ <field name="view_mode">tree,form,graph,calendar</field> <field name="context">{'search_default_approved': 1,'search_default_create_uid':uid}</field> <field name="search_view_id" ref="view_purchase_order_filter"/> - <field name="help">From the Purchase Orders menu, you can create directly new orders and consult the list of your orders in their various state.</field> + <field name="help">From the Purchase Orders menu, you can track the status of your orders: products received, invoice received and controlled. +</field> </record> <menuitem action="purchase_form_action" id="menu_purchase_form_action" parent="menu_procurement_management" /> @@ -401,7 +404,8 @@ <field name="domain">[('state','in',('confirmed','done')), ('invoiced','=',False)]</field> <field name="view_type">form</field> <field name="view_mode">tree,form</field> - <field name="search_view_id" ref="purchase_order_line_search"/> + <field name="search_view_id" ref="purchase_order_line_search"/> + <field name="help">If you set the invoicing control on a purchase order as "Manual", you can track here all the purchase order lines for which you did not received the supplier invoice yet. Once you are ready to receive a supplier invoice, you can generate a draft supplier invoice based on the lines from this menu.</field> </record> <record id="purchase_line_form_action_tree2" model="ir.actions.act_window.view"> <field eval="1" name="sequence"/> diff --git a/addons/purchase/report/purchase_report_view.xml b/addons/purchase/report/purchase_report_view.xml index d2dbff3be941421d229c6566fc3a3f571819c1d2..f5d1f7a3b421e58dd87135b7cc01687f04424c13 100644 --- a/addons/purchase/report/purchase_report_view.xml +++ b/addons/purchase/report/purchase_report_view.xml @@ -149,6 +149,7 @@ <field name="view_mode">tree,graph</field> <field name="view_id" ref="view_purchase_order_tree"></field> <field name="context">{'search_default_month':1,'search_default_group_partner_id':1,'search_default_group_product_id': 1, 'search_default_orders': 1, 'group_by_no_leaf':1,'group_by':[]}</field> + <field name="help">Purchase Analysis allows you to easily check and analyse your company purchase history and performance. From this menu you can track your negotiation performance, the delivery performance of your suppliers, etc.</field> </record> <record id="action_purchase_order_report_graph" model="ir.actions.act_window"> @@ -177,6 +178,7 @@ <field name="view_type">form</field> <field name="view_mode">tree,graph</field> <field name="context">{'search_default_month':1, 'search_default_group_product':1, 'search_default_group_partner':1, 'search_default_done':1, 'search_default_in': 1, 'group_by':[], 'group_by_no_leaf':1}</field> + <field name="help">Reception Analysis allows you to easily check and analyse your company order receptions and the performance of your supplier's deliveries.</field> </record> <menuitem action="action_stock_move_report_po" id="menu_action_stock_move_report_po" parent="base.next_id_73" sequence="8"/> diff --git a/addons/purchase/security/ir.model.access.csv b/addons/purchase/security/ir.model.access.csv index 77a0aff7bb43dbbe9e96a7ed4fc2d9902a72fadd..ef854f8f03884743de71573ffe92c7644c5fbbfe 100644 --- a/addons/purchase/security/ir.model.access.csv +++ b/addons/purchase/security/ir.model.access.csv @@ -18,7 +18,7 @@ "access_stock_picking_purchase_user_manager","stock.picking","stock.model_stock_picking","group_purchase_manager",1,1,1,1 "access_stock_move_purchase_user_manager","stock.move","stock.model_stock_move","group_purchase_manager",1,1,1,1 "access_account_tax_purchase_user_manager","account.tax","account.model_account_tax","group_purchase_manager",1,0,0,0 -"access_product_product_purchase_user","product.product.purchase.user","product.model_product_product","group_purchase_user",1,1,1,1 +"access_product_product_purchase_user","product.product.purchase.user","product.model_product_product","group_purchase_user",1,0,0,0 "access_product_product_purchase_manager","product.product.purchase.manager","product.model_product_product","group_purchase_manager",1,0,0,0 "access_product_template_purchase_user","product.template purchase_user","product.model_product_template","group_purchase_user",1,1,1,1 "access_product_template_purchase_manager","product.template purchase_manager","product.model_product_template","group_purchase_manager",1,0,0,0 diff --git a/addons/purchase_requisition/purchase_requisition.py b/addons/purchase_requisition/purchase_requisition.py index 1e0c4f0683883bf13dd3ec8c7a6213c057cd340c..c22ced3e1592cd2f26618243123dcb790b11b80b 100644 --- a/addons/purchase_requisition/purchase_requisition.py +++ b/addons/purchase_requisition/purchase_requisition.py @@ -68,30 +68,18 @@ class purchase_requisition(osv.osv): if str(purchase_id.state) in('draft','wait'): purchase_order_obj.action_cancel(cr,uid,[purchase_id.id]) self.write(cr, uid, ids, {'state': 'cancel'}) - for (id,name) in self.name_get(cr, uid, ids): - message = _('Tender') + " '" + name + "' "+ _("is cancelled") - self.log(cr, uid, id, message) return True def tender_in_progress(self, cr, uid, ids, context=None): self.write(cr, uid, ids, {'state':'in_progress'} ,context=context) - for (id,name) in self.name_get(cr, uid, ids): - message = _('Tender') + " '" + name + "' "+ _(" is In Progress") - self.log(cr, uid, id, message) return True def tender_reset(self, cr, uid, ids, context=None): self.write(cr, uid, ids, {'state': 'draft'}) - for (id,name) in self.name_get(cr, uid, ids): - message = _('Tender') + " '" + name + "' "+ _("is in draft state") - self.log(cr, uid, id, message) return True def tender_done(self, cr, uid, ids, context=None): self.write(cr, uid, ids, {'state':'done', 'date_end':time.strftime('%Y-%m-%d %H:%M:%S')}, context=context) - for (id,name) in self.name_get(cr, uid, ids): - message = _('Tender') + " '" + name + "' "+ _("is done") - self.log(cr, uid, id, message) return True purchase_requisition() diff --git a/addons/purchase_requisition/purchase_requisition_view.xml b/addons/purchase_requisition/purchase_requisition_view.xml index d209ef6b3fde7796013848758b0c55520aaf8ae0..2a30c3789dfab4cbbd93bf06dfcfdbc36c68c7cb 100644 --- a/addons/purchase_requisition/purchase_requisition_view.xml +++ b/addons/purchase_requisition/purchase_requisition_view.xml @@ -152,6 +152,7 @@ <field name="view_mode">tree,form</field> <field name="context">{"search_default_create_uid":uid,'search_default_draft': 1}</field> <field name="search_view_id" ref="view_purchase_requisition_filter"/> + <field name="help">A purchase requisition is a step before the 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 supplier. After the negotiation, once you have reviewed all the supplier's offers, you can validate some and cancel others.</field> </record> <menuitem diff --git a/addons/resource/resource_view.xml b/addons/resource/resource_view.xml index a0db745efb46980f2c98ca98517e0c62d2201e76..801e363681fd4efee0f88fc1a4ce7957ad792812 100644 --- a/addons/resource/resource_view.xml +++ b/addons/resource/resource_view.xml @@ -201,7 +201,7 @@ <field name="view_mode">tree,form</field> <field name="context">{}</field> <field name="search_view_id" ref="view_resource_resource_search"/> - <field name="help">There you can find clusters of your resources type involved in a specific project phase as well as their workload.</field> + <field name="help">Resources allows you to create and manage resources that should be involved in a specific project phase. It also allows you to set their efficiency level and workload based on their weekly working hours</field> </record> <record id="resource_calendar_leave_form" model="ir.ui.view"> diff --git a/addons/sale/i18n/mn.po b/addons/sale/i18n/mn.po index 006f67fca37bdb5e418f8dd4a4bcd7c603c18f08..7ed2bf0c80c95850f0ef02cd20e20824dbd8b550 100644 --- a/addons/sale/i18n/mn.po +++ b/addons/sale/i18n/mn.po @@ -8,13 +8,13 @@ msgstr "" "Project-Id-Version: openobject-addons\n" "Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n" "POT-Creation-Date: 2009-08-28 16:01+0000\n" -"PO-Revision-Date: 2010-09-29 11:07+0000\n" -"Last-Translator: ub121 <ubs121@gmail.com>\n" +"PO-Revision-Date: 2010-10-16 11:51+0000\n" +"Last-Translator: sugi <Unknown>\n" "Language-Team: Mongolian <mn@li.org>\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2010-09-30 04:42+0000\n" +"X-Launchpad-Export-Date: 2010-10-17 04:53+0000\n" "X-Generator: Launchpad (build Unknown)\n" #. module: sale @@ -58,6 +58,8 @@ msgid "" "If you don't have enough stock available to deliver all at once, do you " "accept partial shipments or not?" msgstr "" +"Ð¥ÑÑ€Ñв та бүгдийг нÑгÑн зÑÑ€Ñг багтаахад хангалтгүй агуулахтай бол Ñ…ÑÑÑгчилÑÑн " +"барааг хүлÑÑж авдаг уу ÑÑвÑл авдгүй юу?" #. module: sale #: selection:sale.order.line,type:0 @@ -84,7 +86,7 @@ msgstr "Таны нÑÑ…ÑмжлÑл амжилттай Ò¯Ò¯ÑлÑÑ !" #: view:sale.order:0 #: view:sale.order.line:0 msgid "Automatic Declaration" -msgstr "" +msgstr "Ðвтомат мÑдÑгдÑл" #. module: sale #: model:ir.actions.act_window,name:sale.action_order_line_tree3 @@ -281,6 +283,11 @@ msgid "" "choose if you invoice based on ordered or shipped quantities. If the product " "is a service, shipped quantities means hours spent on the associated tasks." msgstr "" +"Борлуулалтын захиалга нь автоматаар нÑÑ…ÑмжлÑлийн баталгааг Ò¯Ò¯ÑгÑдÑг. " +"ЗахиалÑан болон хүргÑж өгÑөн тоо Ñ…ÑмжÑÑ Ð½ÑŒ адилхан биш байх боломжтой. Ð¥ÑÑ€Ñв " +"нÑÑ…ÑмжлÑл гаргах бол захиалагдÑан ÑÑвÑл Ñ‚ÑÑвÑрлÑгдÑÑн тоо Ñ…ÑмжÑÑн дÑÑÑ€ " +"Ñуурилан гаргах Ñ…ÑÑ€ÑгтÑй. Ð¥ÑÑ€Ñв бүтÑÑгдÑхүүн үйлчилгÑÑ Ð±Ð¾Ð» Ñ‚ÑÑвÑрлÑгдÑÑн тоо " +"Ñ…ÑмжÑÑ Ð½ÑŒ холбоотой дааллгавар дÑÑÑ€ зарцуулÑан цаг болно." #. module: sale #: selection:sale.order.line,state:0 @@ -386,6 +393,8 @@ msgid "" "When you select Shipping Ploicy = 'Automatic Invoice after delivery' , it " "will automatic create after delivery." msgstr "" +"ТÑÑвÑрлÑлтийн удирдамж нь = 'ХүргÑлтийн дараах автомат нÑÑ…ÑмжлÑл ' гÑÑÑн " +"Ñонголттой үед хүргÑлтийн дараа автоматаар Ò¯Ò¯ÑÑÑ… болно." #. module: sale #: selection:sale.order,picking_policy:0 @@ -524,7 +533,7 @@ msgstr "ÐÑÑ…ÑмжлÑлийг бүлÑглÑÑ…" #: model:ir.actions.act_window,name:sale.action_order_tree5 #: model:ir.ui.menu,name:sale.menu_action_order_tree5 msgid "All Quotations" -msgstr "" +msgstr "Бүх ханш" #. module: sale #: field:sale.order.line,discount:0 @@ -540,18 +549,18 @@ msgstr "Ðоорог нÑÑ…ÑмжлÑл нÑгтлангаар Ñ…Ñнагдах #: model:ir.actions.act_window,name:sale.action_order_tree3 #: model:ir.ui.menu,name:sale.menu_action_order_tree3 msgid "Sales Order To Be Invoiced" -msgstr "" +msgstr "Борлуулалтын захаилга нÑÑ…ÑмжлÑгдÑÑн байх" #. module: sale #: model:process.node,note:sale.process_node_saleorderprocurement0 msgid "Procurement for each line" -msgstr "" +msgstr "Мөр бүрÑÑÑ€ татан авалт хийх" #. module: sale #: model:ir.actions.act_window,name:sale.action_order_tree10 #: model:ir.ui.menu,name:sale.menu_action_order_tree10 msgid "My Quotations" -msgstr "" +msgstr "Миний ханш" #. module: sale #: wizard_view:sale.advance_payment_inv,create:0 @@ -566,17 +575,17 @@ msgstr "Захиалгын шугам" #. module: sale #: field:sale.config.picking_policy,picking_policy:0 msgid "Packing Default Policy" -msgstr "" +msgstr "Савлах заÑамал удирдамж" #. module: sale #: model:process.node,note:sale.process_node_saleorder0 msgid "Manages the delivery and invoicing progress" -msgstr "" +msgstr "ХүргÑлт болон нÑÑ…ÑмжлÑÑ… үйл ажиллагааг удирдах" #. module: sale #: field:sale.config.picking_policy,order_policy:0 msgid "Shipping Default Policy" -msgstr "" +msgstr "ТÑÑвÑрлÑлтийн заÑамал арга" #. module: sale #: field:sale.order.line,product_packaging:0 @@ -625,7 +634,7 @@ msgstr "ÐÑÑ…ÑмжилÑÑн" #. module: sale #: model:ir.actions.wizard,name:sale.advance_payment msgid "Advance Invoice" -msgstr "" +msgstr "УрьдчилÑан нÑÑ…ÑмжлÑл" #. module: sale #: field:sale.order,state:0 @@ -636,7 +645,7 @@ msgstr "Төлөв" #: model:ir.actions.act_window,name:sale.action_order_line_tree2 #: model:ir.ui.menu,name:sale.menu_action_order_line_tree2 msgid "Uninvoiced Lines" -msgstr "" +msgstr "ÐÑÑ…ÑмжлÑлгүй мөр" #. module: sale #: model:ir.actions.todo,note:sale.config_wizard_step_sale_picking_policy @@ -669,7 +678,7 @@ msgstr "" #: model:ir.actions.act_window,name:sale.action_order_tree7 #: model:ir.ui.menu,name:sale.menu_action_order_tree7 msgid "My sales in shipping exception" -msgstr "" +msgstr "Миний борлуулалтын алдаатай Ñ‚ÑÑвÑрлÑлт" #. module: sale #: view:sale.config.picking_policy:0 @@ -705,7 +714,7 @@ msgstr "ЗаÑварлаÑан нийлүүлÑлт" #. module: sale #: selection:sale.order,order_policy:0 msgid "Shipping & Manual Invoice" -msgstr "" +msgstr "ТÑÑвÑрлÑÑ… болон нÑÑ…ÑмжлÑÑ… заавар" #. module: sale #: model:process.transition,name:sale.process_transition_saleorderprocurement0 @@ -716,7 +725,7 @@ msgstr "Борлуулалт нийлүүлÑлт" #. module: sale #: view:sale.config.picking_policy:0 msgid "Configure Sale Order Logistic" -msgstr "" +msgstr "Борлуулалтын захиалгын ЛожиÑтик тохиргоо" #. module: sale #: field:sale.order,amount_untaxed:0 @@ -751,7 +760,7 @@ msgstr "УрьдчилÑан нÑÑ…ÑмжлÑл Ò¯Ò¯ÑгÑÑ…" #. module: sale #: model:process.node,note:sale.process_node_saleprocurement0 msgid "One procurement for each product." -msgstr "" +msgstr "БүтÑÑгдÑхүүн бүр дÑÑÑ€ нÑг татан авалт" #. module: sale #: model:ir.actions.act_window,name:sale.action_order_form @@ -785,7 +794,7 @@ msgstr "Ò®Ð½Ñ Ð±Ò¯Ò¯Ñ€Ð°Ð»Ñ‚" #. module: sale #: model:product.template,name:sale.advance_product_0_product_template msgid "Advance Product" -msgstr "" +msgstr "ТөлÑөн бүтÑÑгдÑхүүн" #. module: sale #: model:process.transition,note:sale.process_transition_invoice0 @@ -856,7 +865,7 @@ msgstr "Зөвхөн хүргÑÑ… захиалга" #: view:sale.order:0 #: view:sale.order.line:0 msgid "Sales order lines" -msgstr "" +msgstr "Борлуулалтын захиалгын мөр" #. module: sale #: field:sale.order.line,sequence:0 @@ -866,7 +875,7 @@ msgstr "Дараалал" #. module: sale #: model:ir.actions.act_window,name:sale.act_res_partner_2_sale_order msgid "Sales" -msgstr "" +msgstr "Борлуулалт" #. module: sale #: view:sale.order:0 @@ -968,12 +977,12 @@ msgstr "" #. module: sale #: model:process.transition,note:sale.process_transition_saleinvoice0 msgid "Confirm sale order and Create invoice." -msgstr "" +msgstr "Борлуулалтын захиалгыг батлах болон нÑÑ…ÑмжлÑл Ò¯Ò¯ÑгÑÑ…" #. module: sale #: selection:sale.config.picking_policy,step:0 msgid "Packing List & Delivery Order" -msgstr "" +msgstr "Савлагааны жагÑаалт ба ХүргÑлтийн захаилга" #. module: sale #: selection:sale.order.line,state:0 @@ -1005,7 +1014,7 @@ msgstr "" #. module: sale #: view:sale.config.picking_policy:0 msgid "Set Default" -msgstr "" +msgstr "ҮндÑÑн утга болгох" #. module: sale #: view:sale.order:0 @@ -1087,13 +1096,13 @@ msgstr "Ðрх шилжүүлÑхийг цуцлах" #. module: sale #: selection:sale.order,order_policy:0 msgid "Invoice from the Packing" -msgstr "" +msgstr "Савлагааны нÑÑ…ÑмжлÑл" #. module: sale #: model:ir.actions.wizard,name:sale.wizard_sale_order_line_invoice #: model:ir.actions.wizard,name:sale.wizard_sale_order_make_invoice msgid "Make invoices" -msgstr "" +msgstr "ÐÑÑ…ÑмжлÑл Ò¯Ò¯ÑгÑÑ…" #. module: sale #: help:sale.order,partner_order_id:0 @@ -1135,7 +1144,7 @@ msgstr "ÐÑÑ…ÑмжлÑÑ… арга" #: model:ir.actions.act_window,name:sale.action_order_tree_new #: model:ir.ui.menu,name:sale.menu_action_order_tree_new msgid "New Quotation" -msgstr "" +msgstr "Ð¨Ð¸Ð½Ñ Ñ…Ð°Ð½Ñˆ" #. module: sale #: view:sale.order:0 @@ -1156,7 +1165,7 @@ msgstr "Барааны зарах нÑгж" #. module: sale #: selection:sale.order,state:0 msgid "Manual In Progress" -msgstr "" +msgstr "Үйл Ñвцын заавар" #. module: sale #: field:sale.order.line,product_uom:0 diff --git a/addons/sale/i18n/ru.po b/addons/sale/i18n/ru.po index 556ed670eaf517866e3145f98660359f56acecff..5e2db5aff01ffc62651cd156e3770939ed82fbb4 100644 --- a/addons/sale/i18n/ru.po +++ b/addons/sale/i18n/ru.po @@ -7,13 +7,13 @@ msgstr "" "Project-Id-Version: OpenERP Server 6.0dev\n" "Report-Msgid-Bugs-To: support@openerp.com\n" "POT-Creation-Date: 2009-08-28 16:01+0000\n" -"PO-Revision-Date: 2010-09-30 06:52+0000\n" +"PO-Revision-Date: 2010-10-16 11:15+0000\n" "Last-Translator: Chertykov Denis <chertykov@gmail.com>\n" "Language-Team: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2010-10-01 08:47+0000\n" +"X-Launchpad-Export-Date: 2010-10-17 04:53+0000\n" "X-Generator: Launchpad (build Unknown)\n" #. module: sale @@ -762,7 +762,7 @@ msgstr "" #. module: sale #: model:process.node,note:sale.process_node_saleprocurement0 msgid "One procurement for each product." -msgstr "" +msgstr "Одна закупка Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ товара." #. module: sale #: model:ir.actions.act_window,name:sale.action_order_form @@ -773,12 +773,12 @@ msgstr "Заказы" #. module: sale #: field:product.product,pricelist_sale:0 msgid "Sale Pricelists" -msgstr "" +msgstr "Каталоги продаж" #. module: sale #: selection:sale.config.picking_policy,picking_policy:0 msgid "Direct Delivery" -msgstr "" +msgstr "ПрÑÐ¼Ð°Ñ Ð´Ð¾Ñтавка" #. module: sale #: view:sale.order:0 @@ -831,7 +831,7 @@ msgstr "Заказы в процеÑÑе выполнениÑ" #. module: sale #: model:process.transition.action,name:sale.process_transition_action_assign0 msgid "Assign" -msgstr "" +msgstr "Ðазначить" #. module: sale #: view:sale.order:0 @@ -905,7 +905,7 @@ msgstr "Цена за ед." #. module: sale #: field:sale.order,fiscal_position:0 msgid "Fiscal Position" -msgstr "" +msgstr "ÐÐ°Ð»Ð¾Ð³Ð¾Ð²Ð°Ñ Ð¿Ð¾Ð·Ð¸Ñ†Ð¸Ñ" #. module: sale #: rml:sale.order:0 diff --git a/addons/sale/sale.py b/addons/sale/sale.py index 4db4641ad4ce179f5fff01017dd5354949cf0321..409be07a765cab8bd1feac52d2bbca9b7a140b78 100644 --- a/addons/sale/sale.py +++ b/addons/sale/sale.py @@ -331,7 +331,7 @@ class sale_order(osv.osv): wf_service.trg_delete(uid, 'sale.order', inv_id, cr) wf_service.trg_create(uid, 'sale.order', inv_id, cr) for (id,name) in self.name_get(cr, uid, ids): - message = _('Sale order ') + " '" + name + "' "+ _("is in draft state") + message = _("The sale order '%s' has been set in draft state.") %(name,) self.log(cr, uid, id, message) return True @@ -486,9 +486,9 @@ class sale_order(osv.osv): 'context': "{'type':'out_invoice'}", 'type': 'ir.actions.act_window', 'nodestroy' :True, - 'target': 'new', + 'target': 'current', 'res_id': inv_ids and inv_ids[0] or False, - } + } return result @@ -618,7 +618,7 @@ class sale_order(osv.osv): wf_service.trg_validate(uid, 'account.invoice', inv, 'invoice_cancel', cr) sale_order_line_obj.write(cr, uid, [l.id for l in sale.order_line], {'state': 'cancel'}) - message = _('Sale order') + " '" + sale.name + _(" is cancelled") + message = _("The sale order '%s' has been cancelled.") % (sale.name,) self.log(cr, uid, sale.id, message) self.write(cr, uid, ids, {'state': 'cancel'}) return True @@ -630,7 +630,7 @@ class sale_order(osv.osv): else: self.write(cr, uid, [o.id], {'state': 'progress', 'date_confirm': time.strftime('%Y-%m-%d')}) self.pool.get('sale.order.line').button_confirm(cr, uid, [x.id for x in o.order_line]) - message = _('Quotation') + " '" + o.name + "' "+ _("is converted to Sale order") + message = _("The quotation '%s' has been converted to a sale order.") % (o.name,) self.log(cr, uid, o.id, message) return True @@ -989,8 +989,6 @@ class sale_order_line(osv.osv): raise osv.except_osv( _('Could not cancel sale order line!'), _('You must first cancel stock moves attached to this sale order line.')) - message = _('Sale order line') + " '" + line.name + "' "+_("is cancelled") - self.log(cr, uid, id, message) return self.write(cr, uid, ids, {'state': 'cancel'}) def button_confirm(self, cr, uid, ids, context=None): diff --git a/addons/sale/sale_installer.py b/addons/sale/sale_installer.py index 4197c0a370be1863f988133b53d1a65c125d487d..a8cc5432020e54ebbc8033d270ad7b67ef919e19 100644 --- a/addons/sale/sale_installer.py +++ b/addons/sale/sale_installer.py @@ -28,11 +28,8 @@ class sale_installer(osv.osv_memory): _columns = { 'delivery': fields.boolean('Delivery Costs', help="Allows you to compute delivery costs on your quotations."), - 'sale_journal': fields.boolean('Sales and deliveries by journal', - help="Allows you to categorise your " - "sales and deliveries (picking lists) between different journals. " - "This module is very helpful for bigger companies that " - "work by departments."), + 'sale_journal': fields.boolean('Invoicing journals', + help="Allows you to group and invoice your delivery orders according to different invoicing types: daily, weekly, etc."), 'sale_layout': fields.boolean('Sales Order Layout Improvement', help="Provides some features to improve the layout of the Sales Order reports."), 'sale_margin': fields.boolean('Margins in Sales Orders', diff --git a/addons/sale/sale_view.xml b/addons/sale/sale_view.xml index 1c193f8fb9ff0f82df3334b7436eadcb1e5886f5..b9eabcaa02ebee6d0a4f621daf094dd271beb76f 100644 --- a/addons/sale/sale_view.xml +++ b/addons/sale/sale_view.xml @@ -1,9 +1,9 @@ <?xml version="1.0" encoding="utf-8"?> <openerp> <data> - <menuitem icon="terp-partner" id="base.menu_base_partner" name="Sales" sequence="0" - groups="base.group_sale_salesman,base.group_sale_manager,base.group_system"/> + groups="base.group_sale_salesman,base.group_sale_manager"/> + <menuitem id="base.menu_sales" name="Sales" parent="base.menu_base_partner" sequence="1"/> <menuitem id="base.menu_product" name="Products" parent="base.menu_base_partner" sequence="9"/> @@ -46,11 +46,14 @@ <field name="view_type">form</field> <field name="view_mode">tree,form</field> <field name="view_id" ref="view_shop_tree"/> + <field name="help">If you have more than one shops reselling your company products, you can create and manage them from here. Whenever you will record a new quotation or sale order, it has to be linked to a shop. The shop also defines the warehouse from which the products will be delivered for each particular sale.</field> </record> + <menuitem id="menu_config_sale" + parent="base.menu_base_config" + name="Sales" groups="base.group_extended"/> <menuitem action="action_shop_form" id="menu_action_shop_form" - parent="product.prod_config_main" sequence="0" - groups="base.group_extended,base.group_sale_manager"/> + parent="menu_config_sale" sequence="0" /> <record id="view_sale_order_calendar" model="ir.ui.view"> <field name="name">sale.order.calendar</field> @@ -197,7 +200,8 @@ <field name="amount_tax"/> <field name="amount_total"/> <button name="button_dummy" states="draft" string="Compute" type="object" icon="gtk-execute"/> - <button name="%(action_view_sale_advance_payment_inv)d" string="Deposit" type="action" icon="gtk-execute" attrs="{'invisible':[('state','!=','draft')]}"/> + <button name="%(action_view_sale_advance_payment_inv)d" string="Advance Invoice" + type="action" icon="gtk-execute" states="draft,manual" groups="base.group_extended"/> </group> <group col="13" colspan="4"> <field name="state"/> @@ -206,7 +210,7 @@ <button name="ship_recreate" states="shipping_except" string="Recreate Procurement" icon="gtk-ok"/> <button name="ship_corrected" states="shipping_except" string="Procurement Corrected" icon="gtk-apply"/> <button name="action_cancel" states="manual,progress" string="Cancel Order" type="object" icon="gtk-cancel"/> - <button name="manual_invoice" states="manual" string="Create Invoice" icon="terp-gtk-go-back-rtl" type="object"/> + <button name="manual_invoice" states="manual" string="Create Invoice" icon="gtk-go-forward" type="object"/> <button name="ship_cancel" states="shipping_except" string="Cancel Order" icon="gtk-cancel"/> <button name="action_cancel_draft" states="cancel" string="Set to Draft" type="object" icon="gtk-convert"/> <button name="cancel" states="draft" string="Cancel Order" icon="gtk-cancel"/> @@ -373,14 +377,15 @@ <form string="Sales Order Lines"> <group colspan="4" col="6"> <field name="order_id"/> - <field name="product_id" readonly="1"/> + <field name="order_partner_id" readonly="1" invisible="1"/> <field name="invoiced"/> + + <field name="product_id" readonly="1"/> <field name="product_uom_qty" readonly="1"/> - <field groups="product.group_uos" name="product_uos_qty"/> <field name="product_uom"/> + <field colspan="4" name="name" groups="base.group_extended"/> <field name="company_id" groups="base.group_multi_company" readonly="1"/> - <field name="order_partner_id" readonly="1" invisible="1"/> </group> <separator colspan="4" string="Price"/> <group colspan="4" col="6"> @@ -393,20 +398,21 @@ <separator colspan="4"/> <field name="state"/> <group col="3" colspan="2"> - <!-- <button colspan="1" - name="%(action_view_sale_order_line_make_invoice)d" - string="Make Invoice" - type="action" - icon="terp-document-new" - attrs="{'invisible': ['|',('state', 'in', ('draft','cancel')),('invoiced', '=', 1)]}"/>--> <button name="button_cancel" string="Cancel" type="object" icon="gtk-cancel" - attrs="{'invisible': ['|',('state', 'not in', ('confirmed', 'exception')),('invoiced', '=', 1)]}"/> + states="confirmed,exception"/> + <button colspan="1" + name="%(action_view_sale_order_line_make_invoice)d" + string="Create Invoice" + type="action" + states="done" + icon="gtk-go-forward" + attrs="{'invisible': [('invoiced', '=', 1)]}"/> <button name="button_done" string="Done" type="object" - icon="gtk-jump-to" - attrs="{'invisible': ['|',('state', 'not in', ('confirmed','exception')),('invoiced', '=', 0)]}"/> + states="confirmed,exception" + icon="gtk-go-forward" /> </group> </form> </field> @@ -443,10 +449,15 @@ <field name="type">search</field> <field name="arch" type="xml"> <search string="Search Uninvoiced Lines"> - <filter icon="terp-check" string="Confirmed" + <filter icon="terp-check" string="To Do" domain="[('state','=','confirmed')]" name="sale order" - help="Confirmed Sale Order Lines" + help="Confirmed sale order lines, not yet delivered" + /> + <filter icon="terp-check" string="Done" + domain="[('state','=','done')]" + name="sale_order_done" + help="Sale order lines done" /> <separator orientation="vertical"/> <filter icon="terp-accessories-archiver" string="Shipped" @@ -513,7 +524,7 @@ src_model="product.product" groups="base.group_extended"/> - <menuitem id="menu_invoiced" name="Billing" parent="base.menu_base_partner" sequence="5" + <menuitem id="menu_invoiced" name="Invoicing" parent="base.menu_base_partner" sequence="5" groups="base.group_extended"/> <menuitem action="action_order_line_tree2" id="menu_invoicing_sales_order_lines" parent="menu_invoiced" sequence="2" groups="base.group_sale_salesman,base.group_sale_manager"/> <!-- configartion view --> @@ -529,8 +540,7 @@ <attribute name="string">Sales Application Configuration</attribute> </form> <separator string="title" position="attributes"> - <attribute name="string" - >Configure Sales Order Logistic</attribute> + <attribute name="string">Configure Sales Order Logistic</attribute> </separator> <xpath expr="//label[@string='description']" position="attributes"> <attribute name="string">Setup your sales workflow and default values.</attribute> diff --git a/addons/sale/security/ir.model.access.csv b/addons/sale/security/ir.model.access.csv index 3675ccf32aece9043c3971ecd06cc2692689d8c0..11718051d0433b638411d38ca09e9b8e4f9e1dee 100644 --- a/addons/sale/security/ir.model.access.csv +++ b/addons/sale/security/ir.model.access.csv @@ -1,8 +1,8 @@ "id","name","model_id:id","group_id:id","perm_read","perm_write","perm_create","perm_unlink" -"access_sale_shop","sale.shop","model_sale_shop","base.group_sale_salesman",1,0,0,0 +"access_sale_shop","sale.shop","model_sale_shop","base.group_user",1,0,0,0 "access_sale_order","sale.order","model_sale_order","base.group_sale_salesman",1,1,1,0 "access_sale_order_line","sale.order.line","model_sale_order_line","base.group_sale_salesman",1,1,1,1 -"access_sale_shop_admin","sale.shop","model_sale_shop","base.group_system",1,1,1,1 +"access_account_invoice_tax_salesman","account_invoice_tax salesman","account.model_account_invoice_tax","base.group_sale_salesman",1,1,1,0 "access_account_invoice_salesman","account_invoice salesman","account.model_account_invoice","base.group_sale_salesman",1,1,1,0 "access_account_invoice_manager","account_invoice manager","account.model_account_invoice","base.group_sale_manager",1,1,1,1 "access_account_invoice_line_salesman","account_invoice.line salesman","account.model_account_invoice_line","base.group_sale_salesman",1,1,1,0 @@ -23,7 +23,6 @@ "access_sale_account_journal","account.journal sale order.user","account.model_account_journal","base.group_sale_salesman",1,0,0,0 "access_res_partner_sale_user","res.partner.sale.user","base.model_res_partner","base.group_sale_salesman",1,0,0,0 "access_res_partner_sale_manager","res.partner.sale.user","base.model_res_partner","base.group_sale_manager",1,0,0,0 -"access_res_partner_sale_system","res.partner.sale.system","base.model_res_partner","base.group_system",1,0,0,0 "access_report_stock_move_sales","report.stock.move.sale","stock.model_report_stock_move","base.group_sale_manager",1,1,1,1 "access_stock_picking_sales","stock.picking.sales","stock.model_stock_picking","base.group_sale_manager",1,1,1,1 "access_product_template_sale_user","product.template sale use","product.model_product_template","base.group_sale_salesman",1,0,0,0 @@ -36,18 +35,8 @@ "access_res_partner_address_user","res.partner.address.user","base.model_res_partner_address","base.group_sale_salesman",1,0,0,0 "access_account_tax_user","account.tax.user","account.model_account_tax","base.group_sale_salesman",1,1,1,0 "access_product_packaging_user","product.packaging.user","product.model_product_packaging","base.group_sale_salesman",1,1,1,0 -"access_res_country_system","res.country system","base.model_res_country","base.group_system",1,1,1,1 -"access_res_country_state_system","res.country.state system","base.model_res_country_state","base.group_system",1,1,1,1 -"access_res_partner_title_system","res.partner.title system","base.model_res_partner_title","base.group_system",1,1,1,1 -"access_sale_order_system","sale.order.system","model_sale_order","base.group_system",1,0,0,0 -"access_sale_order_line_system","sale.order.line.system","model_sale_order_line","base.group_system",1,0,0,0 -"access_product_product_system","product.product.system","product.model_product_product","base.group_system",1,0,0,0 -"access_stock_picking_system","stock.picking.system","stock.model_stock_picking","base.group_system",1,0,0,0 -"access_sale_report_system","sale.report.system","model_sale_report","base.group_system",1,0,0,0 -"access_ir_attachment_system","ir.attachment.system","base.model_ir_attachment","base.group_system",1,0,0,0 "access_ir_attachment_sales","ir.attachment.sales","base.model_ir_attachment","base.group_sale_salesman",1,1,1,0 "access_ir_attachment_manager","ir.attachment.manager","base.model_ir_attachment","base.group_sale_manager",1,1,1,1 -"access_res_partner_bank_type_system","res.partner.bank.type.system","base.model_res_partner_bank_type","base.group_system",1,0,0,0 "access_stock_warehouse_manager","stock.warehouse.manager","stock.model_stock_warehouse","base.group_sale_manager",1,0,0,0 "access_product_uom_manager","product.uom.manager","product.model_product_uom","base.group_sale_manager",1,0,0,0 "access_product_supplierinfo_manager","product.supplierinfo.manager","product.model_product_supplierinfo","base.group_sale_manager",1,0,0,0 @@ -60,6 +49,5 @@ "access_res_partner_bank_type_field_user","res.partner.bank.type.field.user","base.model_res_partner_bank_type_field","base.group_sale_salesman",1,0,0,0 "access_product_uom_user","product.uom.user","product.model_product_uom","base.group_sale_salesman",1,0,0,0 "access_product_supplierinfo_user","product.supplierinfo.user","product.model_product_supplierinfo","base.group_sale_salesman",1,0,0,0 -"access_res_partner_bank_type_field_system","res.partner.bank.type.field.system","base.model_res_partner_bank_type_field","base.group_system",1,0,0,0 "access_product_pricelist_sale_user","product.pricelist.sale.user","product.model_product_pricelist","base.group_sale_salesman",1,0,0,0 "access_account_account_salesman","account_account salesman","account.model_account_account","base.group_sale_salesman",1,0,0,0 diff --git a/addons/sale/stock_view.xml b/addons/sale/stock_view.xml index d0d38cc3d9438f48813bd63731c868a7b1e142b3..4075c523cb9ac209b791003a40318ae76e639819 100644 --- a/addons/sale/stock_view.xml +++ b/addons/sale/stock_view.xml @@ -25,6 +25,7 @@ </field> </record> + <!-- <act_window domain="[('sale_id', '=', active_id)]" id="act_sale_order_2_stock_picking" @@ -46,6 +47,7 @@ <field name="view_id" ref="stock.view_picking_out_form"/> <field name="act_window_id" ref="act_sale_order_2_stock_picking"/> </record> + --> <!-- Adding Sale Order Reference to outgoing picking --> diff --git a/addons/sale/wizard/sale_make_invoice_advance.py b/addons/sale/wizard/sale_make_invoice_advance.py index 0eac0308acc78c62dc156400ea20f11a572053f1..0037c10405d31d8998b8cf2ad2feb777f4aab5ce 100644 --- a/addons/sale/wizard/sale_make_invoice_advance.py +++ b/addons/sale/wizard/sale_make_invoice_advance.py @@ -26,8 +26,9 @@ class sale_advance_payment_inv(osv.osv_memory): _name = "sale.advance.payment.inv" _description = "Sale Advance Payment Invoice" _columns = { - 'product_id': fields.many2one('product.product', 'Product', required=True), - 'amount': fields.float('Unit Price', size=(16, 2), required=True), + 'product_id': fields.many2one('product.product', 'Advance Product', required=True, + 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', size=(16, 2), required=True, help="The amount to be invoiced in advance."), 'qtty': fields.float('Quantity', size=(16, 2), required=True), } _defaults = { @@ -95,6 +96,7 @@ class sale_advance_payment_inv(osv.osv_memory): } inv_id = inv_obj.create(cr, uid, inv) + inv_obj.button_reset_taxes(cr, uid, [inv_id], context=context) for inv in sale.invoice_ids: ids_inv.append(inv.id) @@ -168,7 +170,7 @@ class sale_open_invoice(osv.osv_memory): tree_id = mod_obj._get_id(cr, uid, 'account', 'invoice_tree') tree_res = mod_obj.browse(cr, uid, tree_id, context=context).res_id return { - 'name': 'Invoices', + 'name': _('Advance Invoice'), 'view_type': 'form', 'view_mode': 'form,tree', 'res_model': 'account.invoice', @@ -181,4 +183,4 @@ class sale_open_invoice(osv.osv_memory): sale_open_invoice() -# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: \ No newline at end of file +# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/addons/sale/wizard/sale_make_invoice_advance.xml b/addons/sale/wizard/sale_make_invoice_advance.xml index 6e192d31108d795dfda06791cf12573281ebaa29..2cdcb9b8c996112dcf4b1b73b4cb117f936b7139 100644 --- a/addons/sale/wizard/sale_make_invoice_advance.xml +++ b/addons/sale/wizard/sale_make_invoice_advance.xml @@ -2,26 +2,26 @@ <openerp> <data> <record id="view_sale_advance_payment_inv" model="ir.ui.view"> - <field name="name">Deposit Invoice</field> + <field name="name">Advance Invoice</field> <field name="model">sale.advance.payment.inv</field> <field name="type">form</field> <field name="arch" type="xml"> - <form string="Partial Invoice"> + <form string="Advance Invoice"> <field name="product_id"/> <newline /> - <field name="qtty"/> + <field name="qtty" invisible="1"/> <field name="amount"/> <newline /> <separator string="" colspan="4"/> <label string="" colspan="2" /> - <button special="cancel" string="Cancel" icon="gtk-cancel"/> - <button name="create_invoices" string="Create Partial Invoice" type="object" icon="terp-gtk-go-back-rtl"/> + <button special="cancel" string="Cancel" icon="gtk-cancel"/> + <button name="create_invoices" string="Create Invoice" type="object" icon="gtk-go-forward"/> </form> </field> </record> <record id="action_view_sale_advance_payment_inv" model="ir.actions.act_window"> - <field name="name">Deposit</field> + <field name="name">Advance Invoice</field> <field name="type">ir.actions.act_window</field> <field name="res_model">sale.advance.payment.inv</field> <field name="view_type">form</field> @@ -34,15 +34,15 @@ <field name="model">sale.open.invoice</field> <field name="type">form</field> <field name="arch" type="xml"> - <form string="Invoices"> - <label string="You invoice has been successfully created!" /> + <form string="Invoices"> + <label string="You invoice has been successfully created!" /> <newline /> <separator string="" colspan="4"/> - <group colspan="4"> - <button special="cancel" string="Close" icon="gtk-cancel"/> - <button name="open_invoice" string="Open Invoice" type="object" icon="gtk-open"/> - </group> - </form> + <group colspan="4"> + <button special="cancel" string="Close" icon="gtk-cancel"/> + <button name="open_invoice" string="Open Invoice" type="object" icon="gtk-go-forward"/> + </group> + </form> </field> </record> diff --git a/addons/sale_journal/__init__.py b/addons/sale_journal/__init__.py index b41a4be55d19571f012d6f04a6925ee86db14e6e..b05803da6c6cda074010cdf1a50b96e51950030a 100644 --- a/addons/sale_journal/__init__.py +++ b/addons/sale_journal/__init__.py @@ -20,7 +20,4 @@ ############################################################################## import sale_journal -import report - -# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/addons/sale_journal/__openerp__.py b/addons/sale_journal/__openerp__.py index 4fde94fc70985bb6c32d1f16d487e87335e17eac..37fc05fd06623c2784d5126a7db298b2dcfe02b4 100644 --- a/addons/sale_journal/__openerp__.py +++ b/addons/sale_journal/__openerp__.py @@ -53,14 +53,9 @@ 'update_xml': [ 'security/ir.model.access.csv', 'sale_journal_view.xml', - 'report/sale_journal_report_view.xml', - 'report/picking_journal_report_view.xml', ], 'demo_xml': ['sale_journal_demo.xml'], - 'test': [ - 'test/sale_journal.yml', - 'test/picking_journal.yml', - ], + 'test': [ ], 'installable': True, 'active': False, 'certificate': '0077661619085', diff --git a/addons/sale_journal/report/__init__.py b/addons/sale_journal/report/__init__.py deleted file mode 100644 index bfe23eb8cce89b18f380158dde1b08846c7d5a62..0000000000000000000000000000000000000000 --- a/addons/sale_journal/report/__init__.py +++ /dev/null @@ -1,25 +0,0 @@ -# -*- coding: utf-8 -*- -############################################################################## -# -# OpenERP, Open Source Management Solution -# Copyright (C) 2004-2010 Tiny SPRL (<http://tiny.be>). -# -# 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 <http://www.gnu.org/licenses/>. -# -############################################################################## - -import sale_journal_report -import picking_journal_report - -# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: \ No newline at end of file diff --git a/addons/sale_journal/report/picking_journal_report.py b/addons/sale_journal/report/picking_journal_report.py deleted file mode 100644 index 74c00367838a1cba59f2dfaf4e3f128eeeecc37f..0000000000000000000000000000000000000000 --- a/addons/sale_journal/report/picking_journal_report.py +++ /dev/null @@ -1,88 +0,0 @@ -# -*- coding: utf-8 -*- -############################################################################## -# -# OpenERP, Open Source Management Solution -# Copyright (C) 2004-2010 Tiny SPRL (<http://tiny.be>). -# -# 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 <http://www.gnu.org/licenses/>. -# -############################################################################## - -from osv import fields, osv -import tools -from decimal_precision import decimal_precision as dp - - -class sale_journal_picking_report(osv.osv): - """ - Picking list by journal and by invoice - """ - _name = "sale.journal.picking.report" - _description = "Picking lists" - _auto = False - _columns = { - 'name': fields.char('Year', size=64, required=False, readonly=True), - 'month': fields.selection([('01', 'January'), ('02', 'February'), ('03', 'March'), ('04', 'April'), ('05', 'May'), ('06', 'June'), - ('07', 'July'), ('08', 'August'), ('09', 'September'), ('10', 'October'), ('11', 'November'), ('12', 'December')], 'Month', readonly=True), - - 'invoice_state':fields.selection([ - ("invoiced", "invoiced"), - ("2binvoiced", "to be invoiced"), - ("none", "None") - ], "Invoice state", readonly=True), - 'state': fields.selection([ - ('draft', 'draft'), - ('auto', 'waiting'), - ('confirmed', 'confirmed'), - ('assigned', 'assigned'), - ('done', 'done'), - ('cancel', 'cancel'), - ], 'State', readonly=True), - 'invoice_type_id': fields.many2one('sale_journal.invoice.type', 'Invoicing method', readonly=True), - 'journal_id': fields.many2one('sale_journal.picking.journal', 'Journal', readonly=True), - 'quantity': fields.float('Quantities', readonly=True), - 'price_total': fields.float('Total Price', readonly=True, digits_compute=dp.get_precision('Sale Price')), - 'price_average': fields.float('Average Price', readonly=True, digits_compute=dp.get_precision('Sale Price')), - 'count': fields.integer('# of Lines', readonly=True), - } - _order = 'journal_id, name desc, price_total desc' - - def init(self, cr): - tools.drop_view_if_exists(cr, 'sale_journal_picking_report') - - cr.execute(""" - create or replace view sale_journal_picking_report as ( - select - min(l.id) as id, - to_char(s.date, 'YYYY') as name, - to_char(s.date, 'MM') as month, - s.state, - s.invoice_state, - s.invoice_type_id, - s.journal_id, - sum(l.product_qty) as quantity, - count(*) as count, - sum(l.product_qty*ol.price_unit*(1.0-ol.discount/100.0)) as price_total, - (sum(l.product_qty*ol.price_unit*(1.0-ol.discount/100.0))/sum(l.product_qty))::decimal(16,2) as price_average - from stock_picking s - right join stock_move l on (s.id=l.picking_id) - left join sale_order_line ol on (l.sale_line_id=ol.id) - group by s.journal_id, s.invoice_type_id, to_char(s.date, 'YYYY'),to_char(s.date, 'MM'),s.state, s.invoice_state - order by s.invoice_type_id, s.invoice_state, s.state - ) - """) - -sale_journal_picking_report() - -# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/addons/sale_journal/report/picking_journal_report_view.xml b/addons/sale_journal/report/picking_journal_report_view.xml deleted file mode 100644 index bcfa293a64cee37c79baddc26d770da62a326247..0000000000000000000000000000000000000000 --- a/addons/sale_journal/report/picking_journal_report_view.xml +++ /dev/null @@ -1,105 +0,0 @@ -<openerp> - <data> - - <!-- picking by journal and invoice's tree view--> - - <record model="ir.ui.view" id="view_sale_journal_picking_report_tree"> - <field name="name">sale.journal.picking.report.tree</field> - <field name="model">sale.journal.picking.report</field> - <field name="type">tree</field> - <field name="arch" type="xml"> - <tree string="Picking Journal"> - <field name="name" invisible="1"/> - <field name="month" invisible="1"/> - <field name="invoice_state" invisible="1"/> - <field name="state" invisible="1"/> - <field name="invoice_type_id" invisible="1"/> - <field name="journal_id" invisible="1"/> - <field name="quantity" /> - <field name="count" /> - <field name="price_average"/> - <field name="price_total"/> - </tree> - </field> - </record> - - <!-- picking journal's graph view --> - - <record id="view_sale_journal_picking_graph" model="ir.ui.view"> - <field name="name">sale.journal.picking.report.graph</field> - <field name="model">sale.journal.picking.report</field> - <field name="type">graph</field> - <field name="arch" type="xml"> - <graph string="Picking journal Statistics" type="bar"> - <field name="journal_id"/> - <field name="invoice_type_id"/> - <field name="price_total"/> - </graph> - </field> - </record> - - <!-- Picking journal search view --> - - <record model="ir.ui.view" id="view_sale_journal_picking_report_search"> - <field name="name">sale.journal.picking.report.search</field> - <field name="model">sale.journal.picking.report</field> - <field name="type">search</field> - <field name="arch" type="xml"> - <search string="Picking journal"> - <group col="8" colspan="4"> - <filter icon="terp-go-year" string="This Year" name="year" domain="[('name','=',time.strftime('%%Y'))]" help="Picking by invoice or by journal method in this year"/> - <filter icon="terp-go-month" string="This Month" name="month" domain="[('month','=',time.strftime('%%m'))]" help="Picking by invoice or by journal method in this month"/> - <separator orientation="vertical"/> - <filter icon="terp-document-new" - string="Draft" - domain="[('state','=','draft')]"/> - <filter icon="terp-gtk-media-pause" - string="Pending" - domain="[('state','=','waiting')]"/> - <filter icon="terp-camera_test" - string="Confirmed" - domain="[('state','=','confirmed')]"/> - <separator orientation="vertical"/> - <field name="name" select="1"/> - <field name="month" select="1"/> - <field name="invoice_state" select="1"/> - <field name="state" select="1"/> - </group> - <newline/> - <group expand="1" string="Group By..." colspan="4" col="12"> - <filter string="Journal" icon="terp-folder-orange" context="{'group_by':'journal_id'}"/> - <filter string="Invoice" icon="terp-dolar" context="{'group_by':'invoice_type_id'}"/> - <separator orientation="vertical"/> - <filter string="Invoice state" icon="terp-stock_effects-object-colorize" context="{'group_by':'invoice_state'}"/> - <filter string="state" icon="terp-stock_effects-object-colorize" context="{'group_by':'state'}"/> - </group> - </search> - </field> - </record> - - <record model="ir.actions.act_window" id="action_sale_journal_picking_report_open"> - <field name="name">Statistics on picking to invoice</field> - <field name="res_model">sale.journal.picking.report</field> - <field name="type">ir.actions.act_window</field> - <field name="view_type">form</field> - <field name="view_mode">tree,form</field> - <field name="domain">[('invoice_state','=','2binvoiced'),('invoice_type_id','=',active_id)]</field> - </record> - - <!-- Action for picking journal view --> - - <record model="ir.actions.act_window" id="action_sale_journal_picking_report_open_menu_all"> - <field name="name">Picking Journal</field> - <field name="res_model">sale.journal.picking.report</field> - <field name="type">ir.actions.act_window</field> - <field name="view_type">form</field> - <field name="view_mode">tree,graph</field> - <field name="search_view_id" ref="view_sale_journal_picking_report_search"/> - <field name="context">{'search_default_month':1, 'group_by_no_leaf':1,'group_by':[]}</field> - </record> - - <menuitem name="Picking journal" id="menu_invoice_type_picking_stats_open_all" parent="stock.next_id_61" - action="action_sale_journal_picking_report_open_menu_all" sequence="8"/> - - </data> -</openerp> diff --git a/addons/sale_journal/report/sale_journal_report.py b/addons/sale_journal/report/sale_journal_report.py deleted file mode 100644 index 723a7f88722eec9afe6ba37fe63fc4c5342cdede..0000000000000000000000000000000000000000 --- a/addons/sale_journal/report/sale_journal_report.py +++ /dev/null @@ -1,75 +0,0 @@ -# -*- coding: utf-8 -*- -############################################################################## -# -# OpenERP, Open Source Management Solution -# Copyright (C) 2004-2010 Tiny SPRL (<http://tiny.be>). -# -# 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 <http://www.gnu.org/licenses/>. -# -############################################################################## - -from osv import fields, osv -import tools - -class sale_journal_report(osv.osv): - _name = "sale.journal.report" - _description = "Sales Orders by Journal" - _auto = False - _columns = { - 'name': fields.char('Year', size=64, required=False, readonly=True), - 'month':fields.selection([('01', 'January'), ('02', 'February'), ('03', 'March'), ('04', 'April'), - ('05', 'May'), ('06', 'June'), ('07', 'July'), ('08', 'August'), ('09', 'September'), - ('10', 'October'), ('11', 'November'), ('12', 'December')], 'Month', readonly=True), - 'state': fields.selection([ - ('draft', 'Quotation'), - ('waiting_date', 'Waiting Schedule'), - ('manual', 'Manual in progress'), - ('progress', 'In progress'), - ('shipping_except', 'Shipping Exception'), - ('invoice_except', 'Invoice Exception'), - ('done', 'Done'), - ('cancel', 'Cancel') - ], 'Order State', readonly=True), - 'journal_id': fields.many2one('sale_journal.sale.journal', 'Journal', readonly=True), - 'quantity': fields.float('Quantities', readonly=True), - 'price_total': fields.float('Total Price', readonly=True), - 'price_average': fields.float('Average Price', readonly=True), - 'count': fields.integer('# of Lines', readonly=True), - } - - _order = 'journal_id, name desc,price_total desc' - - def init(self, cr): - tools.drop_view_if_exists(cr, 'sale_journal_report') - cr.execute(""" - create or replace view sale_journal_report as ( - select - min(l.id) as id, - to_char(s.date_order, 'YYYY') as name, - to_char(s.date_order,'MM') as month, - s.state, - s.journal_id, - sum(l.product_uom_qty) as quantity, - count(*), - sum(l.product_uom_qty*l.price_unit) as price_total, - (sum(l.product_uom_qty*l.price_unit)/sum(l.product_uom_qty))::decimal(16,2) as price_average - from sale_order s - right join sale_order_line l on (s.id=l.order_id) - group by s.journal_id , to_char(s.date_order, 'YYYY'),to_char(s.date_order, 'MM'), s.state - ) - """) - -sale_journal_report() - -# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/addons/sale_journal/report/sale_journal_report_view.xml b/addons/sale_journal/report/sale_journal_report_view.xml deleted file mode 100644 index e73fdcf97858f3a48f7a3b31f9f0e511807adbea..0000000000000000000000000000000000000000 --- a/addons/sale_journal/report/sale_journal_report_view.xml +++ /dev/null @@ -1,89 +0,0 @@ -<openerp> - <data> - - <!-- Sales by journal's view --> - - <record model="ir.ui.view" id="view_sale_journal_report_tree"> - <field name="name">sale.journal.report.tree</field> - <field name="model">sale.journal.report</field> - <field name="type">tree</field> - <field name="arch" type="xml"> - <tree string="Sales by Journal"> - <field name="name" invisible="1"/> - <field name="state" invisible="1"/> - <field name="journal_id" invisible="1"/> - <field name="quantity"/> - <field name="count"/> - <field name="price_average"/> - <field name="price_total"/> - </tree> - </field> - </record> - - <!-- sales journal graph view --> - - <record id="view_sale_journal_graph" model="ir.ui.view"> - <field name="name">sale.journal.report.graph</field> - <field name="model">sale.journal.report</field> - <field name="type">graph</field> - <field name="arch" type="xml"> - <graph string="Sales journal Statistics" type="bar"> - <field name="journal_id"/> - <field name="price_total"/> - </graph> - </field> - </record> - - <!-- sales by journal search view --> - - <record model="ir.ui.view" id="view_sale_journal_report_search"> - <field name="name">sale.journal.report.search</field> - <field name="model">sale.journal.report</field> - <field name="type">search</field> - <field name="arch" type="xml"> - <search string="Sales by Journal"> - <group col="8" colspan="4"> - <filter icon="terp-go-year" string="This Year" domain="[('name','!=','')]" help="Sale journal in this year"/> - <filter icon="terp-go-month" string="This Month" domain="[('name','=',time.strftime('%%Y-%%m-01'))]" help="Sale journal in this month"/> - <separator orientation="vertical"/> - <filter icon="terp-document-new" - string="Quotations" - domain="[('state','=','draft')]"/> - <filter icon="terp-gtk-media-pause" - string="Waiting Schedule" - domain="[('state','=','waiting_date')]"/> - <filter icon="terp-camera_test" - string="In progress" - domain="[('state','=','progress')]"/> - <separator orientation="vertical"/> - <field name="name" select="1"/> - <field name="state" select="1"/> - <field name="journal_id" widget="selection"/> - </group> - <newline/> - <group expand="1" string="Group By..." colspan="4" col="12"> - <filter string="journal" name="journal" icon="terp-folder-orange" context="{'group_by':'journal_id'}"/> - <filter string="State" icon="terp-stock_effects-object-colorize" context="{'group_by':'state'}"/> - </group> - </search> - </field> - </record> - - <!-- Action of sales by journal view--> - - <record model="ir.actions.act_window" id="action_sale_journal_report_open_menu_all"> - <field name="name">Sales by Journal</field> - <field name="res_model">sale.journal.report</field> - <field name="type">ir.actions.act_window</field> - <field name="view_type">form</field> - <field name="view_mode">tree,graph</field> - <field name="search_view_id" ref="view_sale_journal_report_search"/> - <field name="context">{'search_default_journal': 1,'group_by_no_leaf':1,'group_by':[]}</field> - <field name="help">This view allows you to access your sales orders or quotations by journal. You can create journal in order to group different sales orders by teams and perform automatic actions on a journal (confirm or cancel all sales of a journal).</field> - </record> - - <menuitem name="Sales by Journal" id="menu_sale_journal_report_open_all" - parent="base.next_id_64" action="action_sale_journal_report_open_menu_all" sequence="2" groups="base.group_sale_manager"/> - - </data> -</openerp> diff --git a/addons/sale_journal/sale_journal.py b/addons/sale_journal/sale_journal.py index 10f2606955aa3d634b14971b36ba652b56420c55..09902b21099dd9e666ec6cd8fa23ec96d5e8b295 100644 --- a/addons/sale_journal/sale_journal.py +++ b/addons/sale_journal/sale_journal.py @@ -39,181 +39,6 @@ class sale_journal_invoice_type(osv.osv): } sale_journal_invoice_type() -class sale_journal(osv.osv): - _name = 'sale_journal.sale.journal' - _description = 'Sale Journal' - _columns = { - 'name': fields.char('Journal', size=64, required=True, states={'close':[('readonly',True)]}), - 'code': fields.char('Code', size=16, required=True, states={'close':[('readonly',True)]}), - 'user_id': fields.many2one('res.users', 'Responsible', required=True, states={'close':[('readonly',True)]}), - 'date': fields.date('Journal date', required=True, states={'close':[('readonly',True)]}), - 'date_created': fields.date('Creation date', readonly=True, required=True), - 'date_close': fields.date('Close date ', readonly=True), - 'sale_stats_ids': fields.one2many("sale.journal.report", "journal_id", 'Sale stats', readonly=True), - 'state': fields.selection([ - ('draft','Draft'), - ('open','Open'), - ('cancel','Cancel'), - ('confirm','Confirm'), - ('close','Close'), - ], 'State', required=True, readonly=True), - 'note': fields.text('Note'), - } - _defaults = { - 'date': time.strftime('%Y-%m-%d'), - 'date_created': time.strftime('%Y-%m-%d'), - 'user_id': lambda self,cr,uid,context: uid, - 'state': lambda self,cr,uid,context: 'draft', - } - - def button_sale_cancel(self, cr, uid, ids, context={}): - self.write(cr, uid, ids, {'state':'cancel'}) - for id in ids: - sale_ids = self.pool.get('sale.order').search(cr, uid, [('journal_id','=',id),('state','=','draft')]) - for saleid in sale_ids: - wf_service = netsvc.LocalService("workflow") - wf_service.trg_validate(uid, 'sale.order', saleid, 'cancel', cr) - for (id,name) in self.name_get(cr, uid, ids): - message = _('Sale order of Journal') + " '" + name + "' "+ _("is cancelled") - self.log(cr, uid, id, message) - return True - - def button_sale_confirm(self, cr, uid, ids, context={}): - self.write(cr, uid, ids, {'state':'confirm'}) - for id in ids: - sale_ids = self.pool.get('sale.order').search(cr, uid, [('journal_id','=',id),('state','=','draft')]) - for saleid in sale_ids: - wf_service = netsvc.LocalService("workflow") - wf_service.trg_validate(uid, 'sale.order', saleid, 'order_confirm', cr) - for (id,name) in self.name_get(cr, uid, ids): - message = _('Sale orders of Journal') + " '" + name + "' "+ _("is confirmed") - self.log(cr, uid, id, message) - return True - - def button_open(self, cr, uid, ids, context={}): - self.write(cr, uid, ids, {'state':'open'}) - for (id,name) in self.name_get(cr, uid, ids): - message = _('Sale orders of Journal') + " '" + name + "' "+ _("is opened") - self.log(cr, uid, id, message) - return True - - def button_draft(self, cr, uid, ids, context={}): - self.write(cr, uid, ids, {'state':'draft'}) - for (id,name) in self.name_get(cr, uid, ids): - message = _('Sale orders of Journal') + " '" + name + "' "+ _("is in draft state") - self.log(cr, uid, id, message) - return True - - def button_close(self, cr, uid, ids, context={}): - self.write(cr, uid, ids, {'state':'close', 'date_close':time.strftime('%Y-%m-%d')}) - for (id,name) in self.name_get(cr, uid, ids): - message = _('Sale orders of Journal') + " '" + name + "' "+ _("is closed") - self.log(cr, uid, id, message) - return True - def button_reset(self, cr, uid, ids, context=None): - self.write(cr, uid, ids, {'state': 'draft'}) - for (id,name) in self.name_get(cr, uid, ids): - message = _('Sale orders of Journal') + " '" + name + "' "+ _("is in draft state") - self.log(cr, uid, id, message) - return True - def copy(self, cr, uid, id, default=None, context=None): - """Overrides orm copy method - @param self: The object pointer - @param cr: the current row, from the database cursor, - @param uid: the current user’s ID for security checks, - @param ids: List of case’s IDs - @param context: A standard dictionary for contextual values - """ - if context is None: - context = {} - if default is None: - default = {} - default.update({'sale_stats_ids': []}) - return super(sale_journal, self).copy(cr, uid, id, default=default, context=context) - -sale_journal() - -class picking_journal(osv.osv): - _name = 'sale_journal.picking.journal' - _description = 'Picking Journal' - _columns = { - 'name': fields.char('Journal', size=64, required=True), - 'code': fields.char('Code', size=16, required=True), - 'user_id': fields.many2one('res.users', 'Responsible', required=True), - 'date': fields.date('Journal date', required=True), - 'date_created': fields.date('Creation date', readonly=True, required=True), - 'date_close': fields.date('Close date', readonly=True), - 'picking_stats_ids': fields.one2many("sale.journal.picking.report", "journal_id", 'Journal Stats', readonly=True), - 'state': fields.selection([ - ('draft','Draft'), - ('open','Open'), - ('cancel','Cancel'), - ('close','Close'), - ('confirm','Confirm'), - ], 'Creation date', required=True, readonly=True), - 'note': fields.text('Note'), - } - _defaults = { - 'date': time.strftime('%Y-%m-%d'), - 'date_created': time.strftime('%Y-%m-%d'), - 'user_id': lambda self,cr,uid,context: uid, - 'state': lambda self,cr,uid,context: 'draft', - } - def button_picking_cancel(self, cr, uid, ids, context={}): - self.write(cr, uid, ids, {'state':'cancel'}) - for id in ids: - pick_ids = self.pool.get('stock.picking').search(cr, uid, [('journal_id','=',id)]) - for pickid in pick_ids: - wf_service = netsvc.LocalService("workflow") - wf_service.trg_validate(uid, 'stock.picking', pickid, 'button_cancel', cr) - return True - - def button_open(self, cr, uid, ids, context={}): - self.write(cr, uid, ids, {'state':'open'}) - return True - - def button_draft(self, cr, uid, ids, context={}): - self.write(cr, uid, ids, {'state':'draft'}) - return True - - def button_close(self, cr, uid, ids, context={}): - self.write(cr, uid, ids, {'state':'close', 'date_close':time.strftime('%Y-%m-%d')}) - return True - - def button_reset(self, cr, uid, ids, context=None): - self.write(cr, uid, ids, {'state': 'draft'}) - for (id,name) in self.name_get(cr, uid, ids): - message = _('Sale orders of Journal') + " '" + name + "' "+ _("is in draft state") - self.log(cr, uid, id, message) - return True - - def button_picking_confirm(self, cr, uid, ids, context={}): - - self.write(cr, uid, ids, {'state':'confirm'}) - for id in ids: - pick_ids = self.pool.get('stock.picking').search(cr, uid, [('journal_id','=',id)]) - for pickid in pick_ids: - wf_service = netsvc.LocalService("workflow") - wf_service.trg_validate(uid, 'stock.picking', pickid, 'button_confirm', cr) - return True - - def copy(self, cr, uid, id, default=None, context=None): - """Overrides orm copy method - @param self: The object pointer - @param cr: the current row, from the database cursor, - @param uid: the current user’s ID for security checks, - @param ids: List of case’s IDs - @param context: A standard dictionary for contextual values - """ - if context is None: - context = {} - if default is None: - default = {} - default.update({'picking_stats_ids': []}) - return super(picking_journal, self).copy(cr, uid, id, default=default, context=context) - -picking_journal() - #============================================== # sale journal inherit #============================================== @@ -222,22 +47,20 @@ class res_partner(osv.osv): _inherit = 'res.partner' _columns = { 'property_invoice_type': fields.property( - 'sale_journal.invoice.type', - type = 'many2one', - relation = 'sale_journal.invoice.type', - string = "Invoicing Method", - method = True, - view_load = True, - group_name = "Accounting Properties", - help = "The type of journal used for sales and picking."), + 'sale_journal.invoice.type', + type = 'many2one', + relation = 'sale_journal.invoice.type', + string = "Invoicing Method", + method = True, + view_load = True, + group_name = "Accounting Properties", + help = "The type of journal used for sales and picking."), } res_partner() class picking(osv.osv): _inherit = "stock.picking" _columns = { - 'journal_id': fields.many2one('sale_journal.picking.journal', 'Picking Journal', domain=[('state','!=', 'close')],help="Picking Journal"), - 'sale_journal_id': fields.many2one('sale_journal.sale.journal', 'Sale Journal'), 'invoice_type_id': fields.many2one('sale_journal.invoice.type', 'Invoice Type', readonly=True) } picking() @@ -245,7 +68,6 @@ picking() class sale(osv.osv): _inherit = "sale.order" _columns = { - 'journal_id': fields.many2one('sale_journal.sale.journal', 'Journal', domain=[('state','not in', ('done', 'draft''cancel'))]), 'invoice_type_id': fields.many2one('sale_journal.invoice.type', 'Invoice Type') } def action_ship_create(self, cr, uid, ids, *args): @@ -253,18 +75,16 @@ class sale(osv.osv): for order in self.browse(cr, uid, ids, context={}): pids = [ x.id for x in order.picking_ids] self.pool.get('stock.picking').write(cr, uid, pids, { - 'invoice_type_id': order.invoice_type_id.id, - 'sale_journal_id': order.journal_id.id + 'invoice_type_id': order.invoice_type_id and order.invoice_type_id.id or False, }) return result def onchange_partner_id(self, cr, uid, ids, part): result = super(sale, self).onchange_partner_id(cr, uid, ids, part) if part: - itype = self.pool.get('res.partner').browse(cr, uid, part).property_invoice_type.id - result['value']['invoice_type_id'] = itype + itype = self.pool.get('res.partner').browse(cr, uid, part).property_invoice_type + if itype: + result['value']['invoice_type_id'] = itype.id return result sale() - -# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: \ No newline at end of file diff --git a/addons/sale_journal/sale_journal_data.xml b/addons/sale_journal/sale_journal_data.xml index 3639f945c833ccc6db0bbef4c02794da8fbe7dbc..9d305fe9912bf7c68bd2419f6d1c19b020edd800 100644 --- a/addons/sale_journal/sale_journal_data.xml +++ b/addons/sale_journal/sale_journal_data.xml @@ -2,11 +2,11 @@ <openerp> <data noupdate="1"> - <record model="ir.property" id="property_invoice_type_def"> - <field name="name">property_invoice_type</field> - <field name="fields_id" search="[('model','=','res.partner'),('name','=','property_invoice_type')]"/> - <field name="value" eval="False"/> - </record> + <record model="ir.property" id="property_invoice_type_def"> + <field name="name">property_invoice_type</field> + <field name="fields_id" search="[('model','=','res.partner'),('name','=','property_invoice_type')]"/> + <field name="value" eval="False"/> + </record> </data> </openerp> diff --git a/addons/sale_journal/sale_journal_demo.xml b/addons/sale_journal/sale_journal_demo.xml index 30606e251450f38e4b2903f690c6dc246b67c92a..061a5af854465db4db28de129e6c076e9fbc66d2 100644 --- a/addons/sale_journal/sale_journal_demo.xml +++ b/addons/sale_journal/sale_journal_demo.xml @@ -2,17 +2,17 @@ <openerp> <data noupdate="1"> - <record model="sale_journal.invoice.type" id="daily"> - <field name="name">Daily invoicing</field> - </record> - <record model="sale_journal.invoice.type" id="monthly"> - <field name="name">Monthly invoicing</field> - <field name="invoicing_method">grouped</field> - </record> + <record model="sale_journal.invoice.type" id="daily"> + <field name="name">Daily invoicing</field> + </record> + <record model="sale_journal.invoice.type" id="monthly"> + <field name="name">Monthly invoicing</field> + <field name="invoicing_method">grouped</field> + </record> - <record model="ir.property" id="sale_journal.property_invoice_type_def"> - <field name="value" eval="'sale_journal.invoice.type,'+str(daily)"/> - </record> + <record model="ir.property" id="sale_journal.property_invoice_type_def"> + <field name="value" eval="'sale_journal.invoice.type,'+str(daily)"/> + </record> </data> </openerp> diff --git a/addons/sale_journal/sale_journal_view.xml b/addons/sale_journal/sale_journal_view.xml index 1567c5662bbd4146172546866e302759569ce9fa..ad160ec28ae2aafb57d848920def89118c0f7323 100644 --- a/addons/sale_journal/sale_journal_view.xml +++ b/addons/sale_journal/sale_journal_view.xml @@ -1,10 +1,5 @@ <openerp> <data> - <menuitem id="base.menu_base_config" name="Configuration" parent="base.menu_base_partner" sequence="30" - groups="base.group_sale_salesman,base.group_system,base.group_sale_manager"/> - <menuitem id="menu_sale_journal_config" name="Sale Journals" - parent="base.menu_base_config" sequence="5" groups="base.group_sale_salesman"/> - <!-- sale journal invoice Type's Form view --> <record model="ir.ui.view" id="view_sale_journal_invoice_type_form"> @@ -14,13 +9,12 @@ <field name="arch" type="xml"> <form string="Invoice Type"> <group colspan="4" col="6"> - <field name="name" select="1"/> - <field name="invoicing_method" select="1"/> - <field name="active" select="1"/> + <field name="name" select="1"/> + <field name="invoicing_method" select="1"/> + <field name="active" select="1"/> </group> - <separator string="Notes" colspan="3"/> - <newline/> - <field name="note" colspan="3" nolabel="1"/> + <separator string="Notes" colspan="4"/> + <field name="note" colspan="4" nolabel="1"/> </form> </field> </record> @@ -42,113 +36,15 @@ <!-- Action for sale journal invoice Type --> <record model="ir.actions.act_window" id="action_definition_journal_invoice_type"> + <field name="name">Invoice Types</field> <field name="res_model">sale_journal.invoice.type</field> <field name="view_type">form</field> <field name="view_mode">tree,form</field> - <field name="help">Create specific invoicing types that can be maintained in your sales orders. An invoicing type can, for example, be a time lapse to be observed before billing your sales orders. Example: invoice daily, invoice every Wednesday, at end of month, etc.</field> - </record> - - <menuitem name="Invoicing Methods" id="menu_definition_journal_invoice_type" parent="menu_sale_journal_config" action="action_definition_journal_invoice_type"/> - - <!-- sale journal Form view --> - - <record model="ir.ui.view" id="view_sale_journal_form"> - <field name="name">sale_journal.sale.journal.form</field> - <field name="model">sale_journal.sale.journal</field> - <field name="type">form</field> - <field name="arch" type="xml"> - <form string="Sales Journals"> - <group colspan="4" col="6"> - <field name="name" select="1"/> - <field name="code" select="1"/> - <field name="user_id" select="1"/> - <field name="date" select="1"/> - <field name="date_created" select="1"/> - <field name="date_close" select="1"/> - </group> - <notebook colspan="4"> - <page string="Sales"> - <field name="sale_stats_ids" colspan="4" nolabel="1"> - <tree string="Sales"> - <field name="name"/> - <field name="quantity"/> - <field name="price_total"/> - <field name="price_average"/> - <field name="count"/> - <field name="state"/> - </tree> - </field> - </page> - <page string="Notes"> - <field name="note" colspan="4" nolabel="1"/> - </page> - </notebook> - <field name="state"/> - <group col="6" colspan="2"> - <button name="button_open" string="Open Journal" states="draft" type="object" icon="terp-check"/> - <button string="Confirm Sales" name="button_sale_confirm" states="open" type="object" icon="terp-camera_test"/> - <button name="button_close" string="Close Journal" states="confirm,open" type="object" icon="terp-dialog-close"/> - <button name="button_draft" string="Set to Draft" states="cancel" type="object" icon="gtk-convert"/> - <button string="Cancel Sales" name="button_sale_cancel" states="close,draft,open,confirm" type="object" icon="gtk-cancel"/> - </group> - </form> - </field> - </record> - - <!-- Sale journal tree view --> - - <record model="ir.ui.view" id="view_sale_journal_tree"> - <field name="name">sale_journal.sale.journal.tree</field> - <field name="model">sale_journal.sale.journal</field> - <field name="type">tree</field> - <field name="arch" type="xml"> - <tree string="Sales Journals"> - <field name="name" select="1"/> - <field name="code" select="1"/> - <field name="user_id" select="1"/> - <field name="date" select="1"/> - <field name="state"/> - </tree> - </field> - </record> - - <!-- Sale journal search view --> - - <record model="ir.ui.view" id="view_sale_journal_search"> - <field name="name">sale_journal.sale.journal.search</field> - <field name="model">sale_journal.sale.journal</field> - <field name="type">search</field> - <field name="arch" type="xml"> - <search string="Sales by Journal"> - <group col="8" colspan="4"> - <filter icon="terp-document-new" string="Draft" domain="[('state','=','draft')]" help="Sales Journal which are in draft state"/> - <filter icon="terp-check" string="Open" domain="[('state','=','open')]" help="Open Sales Journal"/> - <filter icon="terp-camera_test" string="Confirm" domain="[('state','=','confirm')]" help="Confirmed Sales Journal"/> - <filter icon="gtk-cancel" string="Cancel" domain="[('state','=','cancel')]" help="Sales Journal which are cancelled"/> - <filter icon="terp-dialog-close" string="Close" domain="[('state','=','done')]" help="Sales Journal which are closed"/> - <separator orientation="vertical"/> - <field name="name"/> - <field name="code"/> - <field name="user_id"/> - <field name="date"/> - </group> - </search> - </field> - </record> - - <!-- Action for sale journal view --> - - <record model="ir.actions.act_window" id="action_definition_journal"> - <field name="res_model">sale_journal.sale.journal</field> - <field name="view_type">form</field> - <field name="view_mode">tree,form</field> - <field name="context">{'search_default_user_id':uid}</field> - <field name="search_view_id" ref="view_sale_journal_search"/> - <field name="help">Display and maintain the sales journals to be used in your system. A sales journal is the place where all specific sales are recorded. If you do not need more than one sales journal, just create a generic sales journal that will be the default journal to be used for all made sales.</field> + <field name="help">Invoice types are used on partners, sales order and delivery orders. You can create journal to group your invoicing according to customer's needs: daily, each wednesday, monthly, etc.</field> </record> - - <menuitem id="menu_definition_journal" name="Sales Journals" parent="menu_sale_journal_config" action="action_definition_journal" sequence="70"/> + <menuitem id="menu_definition_journal_invoice_type" + parent="sale.menu_config_sale" action="action_definition_journal_invoice_type"/> <!-- Inherit sales order form view --> @@ -159,11 +55,7 @@ <field name="inherit_id" ref="sale.view_order_form" /> <field name="arch" type="xml"> <field name="origin" position="after"> - <group colspan="2" col="2"> - <separator string="Journal" colspan="4"/> - <field name="journal_id" select="1" widget="selection" domain="[('state','in', ('draft', 'open'))]"/> - <field name="invoice_type_id" select="1" widget="selection"/> - </group> + <field name="invoice_type_id" widget="selection"/> </field> </field> </record> @@ -177,8 +69,7 @@ <field name="inherit_id" ref="sale.view_order_tree" /> <field name="arch" type="xml"> <field name="state" position="after"> - <field name="invoice_type_id"/> - <field name="journal_id"/> + <field name="invoice_type_id" widget="selection"/> </field> </field> </record> @@ -192,9 +83,7 @@ <field name="inherit_id" ref="stock.view_picking_form" /> <field name="arch" type="xml"> <field name="origin" position="after"> - <field name="journal_id" select="1"/> - <field name="sale_journal_id" select="1"/> - <field name="invoice_type_id" select="1"/> + <field name="invoice_type_id" widget="selection"/> </field> </field> </record> @@ -208,9 +97,7 @@ <field name="inherit_id" ref="stock.vpicktree" /> <field name="arch" type="xml"> <field name="origin" position="after"> - <field name="journal_id" select="1"/> <field name="invoice_type_id" select="1"/> - <field name="sale_journal_id" select="1"/> </field> </field> </record> @@ -222,8 +109,6 @@ <field name="inherit_id" ref="stock.view_picking_in_form" /> <field name="arch" type="xml"> <field name="origin" position="after"> - <field name="journal_id" select="1"/> - <field name="sale_journal_id" select="1"/> <field name="invoice_type_id" select="1"/> </field> </field> @@ -236,9 +121,7 @@ <field name="inherit_id" ref="stock.view_picking_in_tree" /> <field name="arch" type="xml"> <field name="origin" position="after"> - <field name="journal_id" select="1"/> <field name="invoice_type_id" select="1"/> - <field name="sale_journal_id" select="1"/> </field> </field> </record> @@ -250,8 +133,6 @@ <field name="inherit_id" ref="stock.view_picking_out_form" /> <field name="arch" type="xml"> <field name="origin" position="after"> - <field name="journal_id" select="1"/> - <field name="sale_journal_id" select="1"/> <field name="invoice_type_id" select="1"/> </field> </field> @@ -264,73 +145,11 @@ <field name="inherit_id" ref="stock.view_picking_out_tree" /> <field name="arch" type="xml"> <field name="origin" position="after"> - <field name="journal_id" select="1"/> <field name="invoice_type_id" select="1"/> - <field name="sale_journal_id" select="1"/> </field> </field> </record> - <!-- Action of sale journal report in sale journal --> - - <act_window name="Monthly sales" - context="{'search_default_journal_id': active_id}" - res_model="sale.journal.report" - src_model="sale_journal.sale.journal" - id="act_sale_journal_sale_journal_2_sale_journal_sale_stats"/> - - <!-- Action of stock picking in picking journal --> - - <act_window name="Assigned picking" - domain="[('state', '=', 'assigned')]" - context="{'search_default_journal_id': [active_id]}" - res_model="stock.picking" - src_model="sale_journal.picking.journal" - id="act_sale_journal_picking_journal_2_stock_picking_assigned"/> - - <!-- Action of stock picking in picking journal --> - - <act_window name="Confirmed picking" - domain="[('state', '=', 'confirmed')]" - context="{'search_default_journal_id': [active_id]}" - res_model="stock.picking" - src_model="sale_journal.picking.journal" - id="act_sale_journal_picking_journal_2_stock_picking_confirmed"/> - - <!-- Action of stock picking in sale journal --> - - <act_window name="Assigned picking" - domain="[('state', '=', 'assigned')]" - context="{'search_default_sale_journal_id': [active_id]}" - res_model="stock.picking" - src_model="sale_journal.sale.journal" - id="act_sale_journal_sale_journal_2_stock_picking_assigned"/> - - <!-- Action of stock picking in sale journal --> - - <act_window name="Confirmed picking" - domain="[('state', '=', 'confirmed')]" - context="{'search_default_sale_journal_id': [active_id]}" - res_model="stock.picking" - src_model="sale_journal.sale.journal" - id="act_sale_journal_sale_journal_2_stock_picking_confirmed"/> - - <!-- Action of sale order in sale journal --> - - <act_window name="Draft sales" - domain="[('journal_id', '=', active_id),('state', '=', 'draft')]" - res_model="sale.order" - src_model="sale_journal.sale.journal" - id="act_sale_journal_sale_journal_2_sale_order_draft"/> - - <!-- Action of sale order in sale journal --> - - <act_window name="Approved sales" - domain="[('journal_id', '=', active_id),('state', '=', 'approved')]" - res_model="sale.order" - src_model="sale_journal.sale.journal" - id="act_sale_journal_sale_journal_2_sale_order_approved"/> - <record id="view_partner_property_form" model="ir.ui.view"> <field name="name">res.partner.journal.property.form.inherit</field> <field name="model">res.partner</field> @@ -338,161 +157,13 @@ <field name="inherit_id" ref="base.view_partner_form"/> <field name="arch" type="xml"> <page string="Sales & Purchases" position="inside"> - <field name="property_invoice_type"/> - </page> - </field> - </record> - - <!--=====================================================--> - <!-- picking journal view--> - <!--===================================================== --> - - <record model="ir.ui.view" id="view_picking_journal_form"> - <field name="name">sale_journal.picking.journal.form</field> - <field name="model">sale_journal.picking.journal</field> - <field name="type">form</field> - <field name="arch" type="xml"> - <form string="Picking Journal"> - <group colspan="4" col="6"> - <field name="name" select="1"/> - <field name="code" select="1"/> - <field name="user_id" select="1"/> - <newline/> - <field name="date" select="1"/> - <field name="date_created" select="1"/> - <field name="date_close" select="1"/> - </group> - <notebook colspan="4"> - <page string="Picking"> - <field name="picking_stats_ids" colspan="4" nolabel="1"/> - </page> - <page string="Notes"> - <field name="note" colspan="4" nolabel="1"/> - </page> - </notebook> - <field name="state"/> - <group col="6" colspan="2"> - <button name="button_open" string="Open Journal" states="draft" type="object" icon="terp-check"/> - <button string="Confirm Picking" name="button_picking_confirm" states="open" type="object" icon="terp-camera_test"/> - <button name="button_reset" string="Set to Draft" states="cancel" type="object" icon="gtk-convert"/> - <button name="button_close" string="Close Journal" states="confirm,open" type="object" icon="terp-dialog-close"/> - <button string="Cancel Picking" name="button_picking_cancel" states="close,draft,open,confirm" type="object" icon="gtk-cancel"/> - </group> - </form> - </field> - </record> - - <record model="ir.ui.view" id="view_picking_journal_tree"> - <field name="name">sale_journal.picking.journal.tree</field> - <field name="model">sale_journal.picking.journal</field> - <field name="type">tree</field> - <field name="arch" type="xml"> - <tree string="Picking Journal"> - <field name="name"/> - <field name="code"/> - <field name="user_id"/> - <field name="date"/> - <field name="state"/> - </tree> - </field> - </record> - - <!-- Picking journal tree view --> - - <record model="ir.ui.view" id="view_picking_journal_search"> - <field name="name">sale_journal.picking.journal.search</field> - <field name="model">sale_journal.picking.journal</field> - <field name="type">search</field> - <field name="arch" type="xml"> - <search string="Picking Journals"> - <group col="8" colspan="4"> - <filter icon="terp-document-new" string="Draft" domain="[('state','=','draft')]" help="Picking Journals which are in draft state"/> - <filter icon="terp-check" string="Open" domain="[('state','=','open')]" help="Open Picking Journals"/> - <filter icon="gtk-cancel" string="Cancel" domain="[('state','=','cancel')]" help="Picking Journals which are cancelled"/> - <filter icon="terp-dialog-close" string="Close" domain="[('state','=','done')]" help="Picking Journals which are closed"/> - <separator orientation="vertical"/> - <field name="name"/> - <field name="code"/> - <field name="user_id"/> - <field name="date"/> + <group colspan="2" col="2"> + <separator string="Invoicing" colspan="2"/> + <field name="property_invoice_type" widget="selection"/> </group> - </search> - </field> - </record> - -<!-- Action of Picking journals --> - - <record model="ir.actions.act_window" id="action_definition_picking_journal"> - <field name="name">Picking Journals</field> - <field name="res_model">sale_journal.picking.journal</field> - <field name="view_type">form</field> - <field name="view_mode">tree,form</field> - <field name="context">{'search_default_user_id':uid}</field> - <field name="search_view_id" ref="view_picking_journal_search"/> - </record> - - <menuitem name="Picking Journals" id="menu_definition_journal_picking" parent="stock.menu_warehouse_config" action="action_definition_picking_journal" groups="base.group_system"/> - - <record model="ir.actions.act_window" id="action_invoice_type_tree"> - <field name="name">Picking by invoice_method</field> - <field name="res_model">sale_journal.invoice.type</field> - <field name="type">ir.actions.act_window</field> - <field name="view_type">tree</field> - </record> - - <record model="ir.actions.act_window" id="action_invoice_type_picking_open"> - <field name="name">Picking to invoice</field> - <field name="res_model">stock.picking</field> - <field name="type">ir.actions.act_window</field> - <field name="view_type">form</field> - <field name="view_mode">tree,form</field> - <field name="domain">[('state','=','done'),('invoice_state','=','2binvoiced'),('invoice_type_id','=',active_id)]</field> - </record> - - <record model="ir.values" id="ir_open_invoice_type"> - <field name="key2">tree_but_open</field> - <field name="model">sale_journal.invoice.type</field> - <field name="name">Picking to invoice</field> - <field name="value" eval="'ir.actions.act_window,%d'%action_invoice_type_picking_open"/> - <field name="object" eval="True"/> - </record> - - <record id="view_picking_out_jorunal_search_form" model="ir.ui.view"> - <field name="name">stock.picking.journal.search</field> - <field name="model">stock.picking</field> - <field name="type">search</field> - <field name="inherit_id" ref="stock.view_picking_out_search"/> - <field name="arch" type="xml"> - <xpath expr="/search/group[@string='Group By...']/filter[@string='Partner']" position="after"> - <filter string="Picking Journal" icon="terp-folder-orange" domain="[]" context="{'group_by':'journal_id'}"/> - </xpath> - </field> - </record> - - <record id="view_picking_in_jorunal_search_form" model="ir.ui.view"> - <field name="name">stock.picking.journal.search</field> - <field name="model">stock.picking</field> - <field name="type">search</field> - <field name="inherit_id" ref="stock.view_picking_in_search"/> - <field name="arch" type="xml"> - <xpath expr="/search/group[@string='Group By...']/filter[@string='Partner']" position="after"> - <filter string="Picking Journal" icon="terp-folder-orange" domain="[]" context="{'group_by':'journal_id'}"/> - </xpath> - </field> - </record> - - <record id="view_picking_internal_jorunal_search_form" model="ir.ui.view"> - <field name="name">stock.picking.journal.search</field> - <field name="model">stock.picking</field> - <field name="type">search</field> - <field name="inherit_id" ref="stock.view_picking_internal_search"/> - <field name="arch" type="xml"> - <xpath expr="/search/group[@string='Group By...']/filter[@string='Origin']" position="after"> - <filter string="Picking Journal" icon="terp-folder-orange" domain="[]" context="{'group_by':'journal_id'}"/> - </xpath> + </page> </field> </record> - </data> </openerp> diff --git a/addons/sale_journal/security/ir.model.access.csv b/addons/sale_journal/security/ir.model.access.csv index 645ee5bd534721bc1705fe3c9397b5d6d43e78fa..bc1a3b003c3f9e25dbb55477f4d6203be2710c29 100644 --- a/addons/sale_journal/security/ir.model.access.csv +++ b/addons/sale_journal/security/ir.model.access.csv @@ -1,18 +1,6 @@ "id","name","model_id:id","group_id:id","perm_read","perm_write","perm_create","perm_unlink" -"access_sale_journal_invoice_type_finance_invoice","sale_journal.invoice.type invoice","model_sale_journal_invoice_type","account.group_account_invoice",1,0,0,0 +"access_sale_journal_invoice_type_finance_invoice","sale_journal.invoice.type invoice","model_sale_journal_invoice_type","account.group_account_invoice",1,1,1,1 "access_sale_journal_invoice_type_partner_manager","sale_journal.invoice.type partner manager","model_sale_journal_invoice_type","base.group_partner_manager",1,0,0,0 "access_sale_journal_invoice_type_salesman","sale_journal.invoice.type salesman","model_sale_journal_invoice_type","base.group_sale_salesman",1,0,0,0 -"access_sale_journal_sale_journal","sale_journal.sale.journal","model_sale_journal_sale_journal","base.group_sale_salesman",1,0,0,0 "access_sale_journal_invoice_type_manager","sale_journal.invoice.type.manager","model_sale_journal_invoice_type","base.group_sale_manager",1,1,1,1 -"access_sale_journal_sale_journal_manager","sale_journal.sale.journal.manager","model_sale_journal_sale_journal","base.group_sale_manager",1,1,1,1 -"access_sale_journal_picking_journal_manager","sale_journal.picking.journal.manager","model_sale_journal_picking_journal","base.group_sale_manager",1,1,1,1 -"access_sale_journal_sale_journal_stock_worker","sale_journal.sale.journal stock worker","model_sale_journal_sale_journal","stock.group_stock_user",1,0,0,0 -"access_sale_journal_picking_journal_stock_worker","sale_journal.picking.journal stock worker","model_sale_journal_picking_journal","stock.group_stock_user",1,0,0,0 "access_sale_journal_invoice_type_stock_worker","sale_journal.invoice_type stock worker","model_sale_journal_invoice_type","stock.group_stock_user",1,0,0,0 -"access_sale_journal_sale_journal_report_manager","sale_journal_sale_journal_report_manager","model_sale_journal_report","base.group_sale_manager",1,1,1,1 -"access_sale_journal_sale_journal_report_system","sale_journal_sale_journal_report_system","model_sale_journal_report","base.group_system",1,0,0,0 -"access_sale_journal_picking_report","sale_journal_picking_report","model_sale_journal_picking_report","stock.group_stock_manager",1,1,1,1 -"access_sale_journal_picking_journal","sale_journal_picking_journal","model_sale_journal_picking_journal","base.group_system",1,1,1,1 -"access_stock_picking_journal_system","stock_picking_journal_system","stock.model_stock_picking","base.group_system",1,1,1,1 -"access_sale_journal_invoice_type_system","sale_journal.invoice.type.system","model_sale_journal_invoice_type","base.group_system",1,1,1,1 -"access_sale_journal_sale_journal_system","sale_journal.sale.journal.system","model_sale_journal_sale_journal","base.group_system",1,1,1,1 diff --git a/addons/sale_journal/test/picking_journal.yml b/addons/sale_journal/test/picking_journal.yml deleted file mode 100644 index 9412c3d40d1a2d76c6837d803975270a47b95eee..0000000000000000000000000000000000000000 --- a/addons/sale_journal/test/picking_journal.yml +++ /dev/null @@ -1,87 +0,0 @@ -- - In order to test the sale_journal module in OpenERP, - I create a picking journal -- - !record {model: sale_journal.picking.journal, id: sale_journal_picking_journal_pickjournal0}: - code: PJ - date: '2010-08-04' - date_created: '2010-08-04' - name: Pick_journal - state: draft - user_id: base.user_root -- - I create a picking for product keyboard, quantity 50 -- - !record {model: stock.picking, id: stock_picking_out0}: - address_id: base.res_partner_address_6 - company_id: base.main_company - invoice_state: none - journal_id: sale_journal_picking_journal_pickjournal0 - move_lines: - - company_id: base.main_company - date_expected: '2010-08-04 14:09:38' - date: '2010-08-04 14:09:38' - location_id: stock.stock_location_stock - product_id: product.product_product_24 - product_qty: 50.0 - product_uom: product.product_uom_unit - location_dest_id: stock.stock_location_customers - name: '[KEYA] Keyboard - AZERTY' - product_uos_qty: 50.0 - move_type: direct - name: OUT/00007 - type: out -- - I verify that a Journal consist of picking order -- - !python {model: sale_journal.picking.journal}: | - pick_jour = self.browse(cr, uid, ref("sale_journal_picking_journal_pickjournal0")) - assert pick_jour.picking_stats_ids, "Journal does not consist of a picking order" -- - Then I click on the 'Open Journal' button -- - !python {model: sale_journal.picking.journal}: | - self.button_open(cr, uid, [ref("sale_journal_picking_journal_pickjournal0")], {"lang": "en_US", "search_default_user_id": - 1, "tz": False, "active_model": "ir.ui.menu", "active_ids": [ref("sale_journal.menu_definition_journal_picking")], - "active_id": ref("sale_journal.menu_definition_journal_picking")}) -- - I verify that a state of journal has transit from draft to open state -- - !python {model: sale_journal.picking.journal}: | - pick_jour = self.browse(cr, uid, ref("sale_journal_picking_journal_pickjournal0")) - assert (pick_jour.state == 'open'), "Journal is not in the open state" -- - Then I click on the 'Confirm Picking' button -- - !python {model: sale_journal.picking.journal}: | - self.button_picking_confirm(cr, uid, [ref("sale_journal_picking_journal_pickjournal0")], {"lang": "en_US", "search_default_user_id": - 1, "tz": False, "active_model": "ir.ui.menu", "active_ids": [ref("sale_journal.menu_definition_journal_picking")], - "active_id": ref("sale_journal.menu_definition_journal_picking")}) -- - I verify that a state of journal has transit from open to confirm state -- - !python {model: sale_journal.picking.journal}: | - pick_jour = self.browse(cr, uid, ref("sale_journal_picking_journal_pickjournal0")) - assert (pick_jour.state == 'confirm'), "Journal is not in the open state" -- - I verify that an picking order is now in the confirm state -- - !python {model: stock.picking}: | - pick_jour_obj = self.pool.get('sale_journal.picking.journal') - jour = pick_jour_obj.browse(cr, uid, ref("sale_journal_picking_journal_pickjournal0")) - stock_pick = self.browse(cr, uid, ref("stock_picking_out0")) - pick_jour = self.search(cr, uid, [('journal_id','=',jour.name) and ('state','=','confirmed')]) - assert pick_jour, "Sale order is not in the confirm state" -- - Then I click on the 'Close Journal' button -- - !python {model: sale_journal.picking.journal}: | - self.button_close(cr, uid, [ref("sale_journal_picking_journal_pickjournal0")], {"lang": "en_US", "search_default_user_id": - 1, "tz": False, "active_model": "ir.ui.menu", "active_ids": [ref("sale_journal.menu_definition_journal_picking")], - "active_id": ref("sale_journal.menu_definition_journal_picking")}) -- - I verify that a state of journal has transit from confirm to close state -- - !python {model: sale_journal.picking.journal}: | - pick_jour = self.browse(cr, uid, ref("sale_journal_picking_journal_pickjournal0")) - assert (pick_jour.state == 'close'), "Journal is not in the open state" diff --git a/addons/sale_journal/test/sale_journal.yml b/addons/sale_journal/test/sale_journal.yml deleted file mode 100644 index 365e26400310399e39e169b559c86c4949f88b12..0000000000000000000000000000000000000000 --- a/addons/sale_journal/test/sale_journal.yml +++ /dev/null @@ -1,95 +0,0 @@ -- - In order to test the sale_journal module in OpenERP, - I create a sale journal and place a sale order related to a journal -- - I create a sale journal -- - !record {model: sale_journal.sale.journal, id: sale_journal_sale_journal_journal0}: - code: J1 - date: '2010-08-04' - date_created: '2010-08-04' - name: Journal_1 - state: draft - user_id: base.user_root -- - I place a sale order for product keyboard, quantity 100 -- - !record {model: sale.order, id: sale_order_so0}: - date_order: '2010-08-04' - invoice_quantity: order - invoice_type_id: sale_journal.daily - journal_id: sale_journal_sale_journal_journal0 - name: Test_SO012 - order_line: - - name: '[KEYA] Keyboard - AZERTY' - price_unit: 7.0 - product_uom: product.product_uom_unit - product_uom_qty: 100.0 - state: draft - delay: 7.0 - product_id: product.product_product_24 - product_uos_qty: 100.0 - th_weight: 0.0 - type: make_to_stock - order_policy: manual - partner_id: base.res_partner_4 - partner_invoice_id: base.res_partner_address_7 - partner_order_id: base.res_partner_address_7 - partner_shipping_id: base.res_partner_address_7 - picking_policy: direct - pricelist_id: product.list0 - shop_id: sale.shop -- - I verify that a Journal consist of sale order -- - !python {model: sale_journal.sale.journal}: | - sal_jour = self.browse(cr, uid, ref("sale_journal_sale_journal_journal0")) - assert sal_jour.sale_stats_ids, "Journal does not consist of a sale order details" -- - Then I click on the 'Open Journal' button -- - !python {model: sale_journal.sale.journal}: | - self.button_open(cr, uid, [ref("sale_journal_sale_journal_journal0")], {"lang": "en_US", "search_default_user_id": - 1, "tz": False, "active_model": "ir.ui.menu", "active_ids": [ref("sale_journal.menu_definition_journal")], - "active_id": ref("sale_journal.menu_definition_journal")}) -- - I verify that a state of journal has transit from draft to open state -- - !python {model: sale_journal.sale.journal}: | - sal_jour = self.browse(cr, uid, ref("sale_journal_sale_journal_journal0")) - assert (sal_jour.state == 'open'), "Journal is not in the open state" -- - Then I click on the 'Confirm Sales' button -- - !python {model: sale_journal.sale.journal}: | - self.button_sale_confirm(cr, uid, [ref("sale_journal_sale_journal_journal0")], {"lang": "en_US", "search_default_user_id": - 1, "tz": False, "active_model": "ir.ui.menu", "active_ids": [ref("sale_journal.menu_definition_journal")], - "active_id": ref("sale_journal.menu_definition_journal")}) -- - I verify that a state of journal has transit from open to confirm state -- - !python {model: sale_journal.sale.journal}: | - sal_jour = self.browse(cr, uid, ref("sale_journal_sale_journal_journal0")) - assert (sal_jour.state == 'confirm'), "Journal is not in the confirm state" -- - I verify that a sale order is now in the confirm state -- - !python {model: sale.order}: | - sale_jour_obj = self.pool.get('sale_journal.sale.journal') - jour = sale_jour_obj.browse(cr, uid, ref("sale_journal_sale_journal_journal0")) - so = self.browse(cr, uid, ref("sale_order_so0")) - so_jour = self.search(cr, uid, [('journal_id','=',jour.name) and ('state','=','manual')]) - assert so_jour, "Sale order is not in the confirm state" -- - Then I click on the 'Close Journal' button -- - !python {model: sale_journal.sale.journal}: | - self.button_close(cr, uid, [ref("sale_journal_sale_journal_journal0")], {"lang": "en_US", "search_default_user_id": - 1, "tz": False, "active_model": "ir.ui.menu", "active_ids": [ref("sale_journal.menu_definition_journal")], - "active_id": ref("sale_journal.menu_definition_journal")}) -- - I verify that a state of journal has transit from confirm to close state -- - !python {model: sale_journal.sale.journal}: | - sal_jour = self.browse(cr, uid, ref("sale_journal_sale_journal_journal0")) - assert (sal_jour.state == 'close'), "Journal is not in the close state" \ No newline at end of file diff --git a/addons/share/__init__.py b/addons/share/__init__.py index eff88be137d992314ba57345bcae69fcbc480f4c..9c0c7bf7da24de0e0ee9f109274de080a4991020 100644 --- a/addons/share/__init__.py +++ b/addons/share/__init__.py @@ -18,5 +18,6 @@ # along with this program. If not, see <http://www.gnu.org/licenses/>. # ############################################################################## -import share + +import res_users import wizard diff --git a/addons/share/__openerp__.py b/addons/share/__openerp__.py index 9dc2a6658d82cf302e88cb3c25744f931647a552..4f2eafb4e52f1b1eab1c58e416a39e28293e7e6a 100644 --- a/addons/share/__openerp__.py +++ b/addons/share/__openerp__.py @@ -21,24 +21,34 @@ { - "name" : "Share Management", + "name" : "Sharing Tools", "version" : "1.1", "depends" : ["base"], "author" : "OpenERP SA", "category": 'Generic Modules', - "description": """The goal is to implement a generic sharing mechanism, where user of OpenERP -can share data from OpenERP to their colleagues, customers, or 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/ will only have access to the correct data. + "description": """ + + This module adds generic sharing tools to your current OpenERP database, + and specifically a 'share' button that is available in the Web client to + share any kind of OpenERP data with colleagues, customers, friends, etc. + + 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. + + This is extremely useful for collaborative work, knowledge sharing, + synchronization with other companies, etc. + """, 'website': 'http://www.openerp.com', - 'init_xml': [], - 'update_xml': [ + 'data': [ + 'security/share_security.xml', + 'security/ir.model.access.csv', 'share_view.xml', + 'res_users_view.xml', 'wizard/share_wizard_view.xml' - ], + ], 'installable': True, - 'active': False, } + # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/addons/share/share.py b/addons/share/res_users.py similarity index 74% rename from addons/share/share.py rename to addons/share/res_users.py index 6e3c4932a1e0c49af51a6545e105b3556a0fc4ca..8168306622032541618fbb65dab6e9d1cfbade14 100644 --- a/addons/share/share.py +++ b/addons/share/res_users.py @@ -18,12 +18,14 @@ # along with this program. If not, see <http://www.gnu.org/licenses/>. # ############################################################################## -from osv import fields, osv, orm +from osv import fields, osv + class res_groups(osv.osv): _name = "res.groups" _inherit = 'res.groups' _columns = { - 'share': fields.boolean('Share') + 'share': fields.boolean('Share Group', groups='share.group_share', readonly=True, + help="Group created to set access rights for sharing data with some users.") } res_groups() @@ -31,6 +33,7 @@ class res_users(osv.osv): _name = 'res.users' _inherit = 'res.users' _columns = { - 'share': fields.boolean('Share') + 'share': fields.boolean('Share User', groups='share.group_share', readonly=True, + help="External user with limited access, created only for the purpose of sharing data.") } res_users() diff --git a/addons/share/res_users_view.xml b/addons/share/res_users_view.xml new file mode 100644 index 0000000000000000000000000000000000000000..09733e81a01f2e4562d62d006d04f12d3318ac65 --- /dev/null +++ b/addons/share/res_users_view.xml @@ -0,0 +1,44 @@ +<?xml version="1.0" encoding="utf-8"?> +<openerp> + <data> + <record model="ir.ui.view" id="res_users_search_sharing"> + <field name="name">res.users.search.share</field> + <field name="model">res.users</field> + <field name="type">search</field> + <field name="inherit_id" ref="base.view_users_search"/> + <field name="arch" type="xml"> + <xpath expr="/search/field[@name='company_ids']" position="after"> + <field name="share"> + <filter name="no_share" string="Regular users only (no share user)" icon="terp-partner" + domain="[('share','=',False)]"/> + </field> + </xpath> + </field> + </record> + + <record model="ir.actions.act_window" id="base.action_res_users"> + <field name="context">{'search_default_no_share': 1}</field> + </record> + + <record model="ir.ui.view" id="res_groups_search_sharing"> + <field name="name">res.groups.search.share</field> + <field name="model">res.groups</field> + <field name="type">search</field> + <field name="priority" eval="8"/> + <field name="arch" type="xml"> + <search string="Groups"> + <field name="name"/> + <field name="share"> + <filter name="no_share" string="Regular groups only (no share groups" icon="terp-partner" + domain="[('share','=',False)]"/> + </field> + </search> + </field> + </record> + + <record model="ir.actions.act_window" id="base.action_res_groups"> + <field name="context">{'search_default_no_share': 1}</field> + </record> + + </data> +</openerp> \ No newline at end of file diff --git a/addons/share/security/ir.model.access.csv b/addons/share/security/ir.model.access.csv new file mode 100644 index 0000000000000000000000000000000000000000..a8f37d300c69181db2dd18d44c894bbaf1c66c8f --- /dev/null +++ b/addons/share/security/ir.model.access.csv @@ -0,0 +1,2 @@ +"id","name","model_id:id","group_id:id","perm_read","perm_write","perm_create","perm_unlink" +"access_share_wizard_user","access_share_wizard_user","model_share_wizard","share.group_share_user",1,1,1,1 \ No newline at end of file diff --git a/addons/share/security/share_security.xml b/addons/share/security/share_security.xml new file mode 100644 index 0000000000000000000000000000000000000000..0b2e8c4c1fdbaf772bdaecbe4d62d874ee851bd7 --- /dev/null +++ b/addons/share/security/share_security.xml @@ -0,0 +1,8 @@ +<?xml version="1.0" encoding="utf-8"?> +<openerp> + <data noupdate="1"> + <record id="group_share_user" model="res.groups"> + <field name="name">Sharing / User</field> + </record> + </data> +</openerp> diff --git a/addons/share/share_view.xml b/addons/share/share_view.xml index 24736b3d53a30f4a300872b3ffdde49ae0cfcd4a..863da6ea747c21bad9ea0a89eb8482368a843cc9 100644 --- a/addons/share/share_view.xml +++ b/addons/share/share_view.xml @@ -6,7 +6,7 @@ <field name="model">res.groups</field> <field name="type">form</field> <field name="inherit_id" ref="base.view_groups_form"/> - <field name="arch" type="xml"> + <field name="arch" type="xml"> <field name="name" position="after"> <field name="share"/> </field> @@ -17,7 +17,7 @@ <field name="model">res.users</field> <field name="type">form</field> <field name="inherit_id" ref="base.view_users_form"/> - <field name="arch" type="xml"> + <field name="arch" type="xml"> <field name="password" position="after"> <field name="share"/> </field> diff --git a/addons/share/wizard/__init__.py b/addons/share/wizard/__init__.py index b906abf5e56dd4fd99fad7d346d739bd7b8eefb2..2034dfe2fc6056bbc624441ef345bd03ef48bef6 100644 --- a/addons/share/wizard/__init__.py +++ b/addons/share/wizard/__init__.py @@ -20,3 +20,4 @@ ############################################################################## import share_wizard + diff --git a/addons/share/wizard/share_wizard.py b/addons/share/wizard/share_wizard.py index add9c4f9352c16c8bebd9310b233382c41ab5109..2d1fd252ecf3bda331e6467aa2e8070dddb06cb6 100644 --- a/addons/share/wizard/share_wizard.py +++ b/addons/share/wizard/share_wizard.py @@ -18,480 +18,448 @@ # along with this program. If not, see <http://www.gnu.org/licenses/>. # ############################################################################## +import logging +import random +import time + +import tools from osv import osv, fields +from osv.expression import expression from tools.translate import _ -import tools +from tools.safe_eval import safe_eval + +FULL_ACCESS = ('perm_read', 'perm_write', 'perm_create', 'perm_unlink') +READ_ONLY_ACCESS = ('perm_read',) + + +RANDOM_PASS_CHARACTERS = [chr(x) for x in range(48, 58) + range(97, 123) + range(65, 91)] +RANDOM_PASS_CHARACTERS.remove('l') #lowercase l, easily mistaken as one or capital i +RANDOM_PASS_CHARACTERS.remove('I') #uppercase i, easily mistaken as one or lowercase L +RANDOM_PASS_CHARACTERS.remove('O') #uppercase o, mistaken with zero +RANDOM_PASS_CHARACTERS.remove('o') #lowercase o, mistaken with zero +RANDOM_PASS_CHARACTERS.remove('0') #zero, mistaken with o-letter +RANDOM_PASS_CHARACTERS.remove('1') #one, mistaken with lowercase-L or capital i +def generate_random_pass(): + pass_chars = RANDOM_PASS_CHARACTERS[:] + random.shuffle(pass_chars) + return ''.join(pass_chars[0:10]) -def _generate_random_number(): - import random - RANDOM_PASS_CHARACTERS = [chr(x) for x in range(48,58) + range(97,123) + range(65,91)] - RANDOM_PASS_CHARACTERS.remove('l') #lowercase l, easily mistaken as one or capital i - RANDOM_PASS_CHARACTERS.remove('I') #uppercase i, easily mistaken as one or lowercase l - RANDOM_PASS_CHARACTERS.remove('O') #uppercase o, mistaken with zero - RANDOM_PASS_CHARACTERS.remove('o') #lowercase o, mistaken with zero - RANDOM_PASS_CHARACTERS.remove('0') #zero, mistaken with o-letter - def generate_random_pass(): - pass_chars = RANDOM_PASS_CHARACTERS[:] - random.shuffle(pass_chars) - return ''.join(pass_chars[0:10]) - return generate_random_pass() class share_create(osv.osv_memory): - _name = 'share.create' - _description = 'Create share' - - def _access(self, cr, uid, ids, field_name, arg, context=None): - if context is None: - context = {} - res = {} - action_id = context.get('action_id', False) - access_obj = self.pool.get('ir.model.access') - action_obj = self.pool.get('ir.actions.act_window') - model_obj = self.pool.get('ir.model') - user_obj = self.pool.get('res.users') - current_user = user_obj.browse(cr, uid, uid) - access_ids = [] - if action_id: - action = action_obj.browse(cr, uid, action_id, context=context) - active_model_ids = model_obj.search(cr, uid, [('model','=',action.res_model)]) - active_model_id = active_model_ids and active_model_ids[0] or False - access_ids = access_obj.search(cr, uid, [ - ('group_id','in',map(lambda x:x.id, current_user.groups_id)), - ('model_id','',active_model_id)]) - for rec_id in ids: - write_access = False - read_access = False - for access in access_obj.browse(cr, uid, access_ids, context=context): - if access.perm_write: - write_access = True - if access.perm_read: - read_access = True - res[rec_id]['write_access'] = write_access - res[rec_id]['read_access'] = read_access - return res + __logger = logging.getLogger('share.wizard') + _name = 'share.wizard' + _description = 'Share Wizard' _columns = { - 'action_id': fields.many2one('ir.actions.act_window', 'Action', required=True), - 'domain': fields.char('Domain', size=64), - 'user_type': fields.selection( [ ('existing','Existing'),('new','New')],'User Type'), - 'user_ids': fields.many2many('res.users', 'share_user_rel', 'share_id','user_id', 'Share Users'), - 'new_user': fields.text("New user"), - 'access_mode': fields.selection([('readwrite','READ & WRITE'),('readonly','READ ONLY')],'Access Mode'), - 'write_access': fields.function(_access, method=True, string='Write Access',type='boolean', multi='write_access'), - 'read_access': fields.function(_access, method=True, string='Write Access',type='boolean', multi='read_access'), + 'action_id': fields.many2one('ir.actions.act_window', 'Action to share', required=True, + help="The action that opens the screen containing the data you wish to share."), + 'domain': fields.char('Domain', size=256, help="Optional domain for further data filtering"), + 'user_type': fields.selection([('existing','Existing external users'),('new','New users (emails required)')],'Users to share with', + help="Select the type of user(s) you would like to share data with."), + 'user_ids': fields.one2many('share.wizard.user', 'share_wizard_id', 'Users'), + 'new_users': fields.text("New users"), + 'access_mode': fields.selection([('readwrite','Read & Write'),('readonly','Read-only')],'Access Mode'), + 'result_line_ids': fields.one2many('share.wizard.result.line', 'share_wizard_id', 'Summary'), + 'share_root_url': fields.char('Generic Share Access URL', size=512, tooltip='Main access page for users that are granted shared access') } _defaults = { - 'user_type' : 'existing', - 'domain': '[]', + 'user_type' : lambda self, cr, uid, *a: 'existing' if self.pool.get('res.users').search(cr, uid, [('share', '=', True)]) else 'new', + 'domain': lambda self, cr, uid, context, *a: context.get('domain', '[]'), + 'share_root_url': lambda self, cr, uid, context, *a: context.get('share_root_url', + _('Please specify "share_root_url" in server configuration or in context')), + 'action_id': lambda self, cr, uid, context, *a: context.get('action_id'), 'access_mode': 'readonly' - } - def default_get(self, cr, uid, fields, context=None): - """ - To get default values for the object. - """ - - res = super(share_create, self).default_get(cr, uid, fields, context=context) - if not context: - context={} - action_id = context.get('action_id', False) - domain = context.get('domain', '[]') - - - if 'action_id' in fields: - res['action_id'] = action_id - if 'domain' in fields: - res['domain'] = domain - return res - - def do_step_1(self, cr, uid, ids, context=None): - """ - This action to excute step 1 - - """ - if not context: - context = {} - - data_obj = self.pool.get('ir.model.data') - - step1_form_view = data_obj._get_id(cr, uid, 'share', 'share_step1_form') - - if step1_form_view: - step1_form_view_id = data_obj.browse(cr, uid, step1_form_view, context=context).res_id - - step1_id = False - for this in self.browse(cr, uid, ids, context=context): - vals ={ - 'domain': this.domain, - 'action_id': this.action_id and this.action_id.id or False, - } - step1_id = this.id - - context.update(vals) - value = { - 'name': _('Step:2 Sharing Wizard'), + def go_step_1(self, cr, uid, ids, context=None): + dummy, step1_form_view_id = self.pool.get('ir.model.data').get_object_reference(cr, uid, 'share', 'share_step1_form') + return { + 'name': _('Sharing Wizard - Step 1'), 'view_type': 'form', 'view_mode': 'form', - 'res_model': 'share.create', + 'res_model': 'share.wizard', 'view_id': False, - 'res_id': step1_id, + 'res_id': ids[0], 'views': [(step1_form_view_id, 'form'), (False, 'tree'), (False, 'calendar'), (False, 'graph')], 'type': 'ir.actions.act_window', - 'context': context, - 'target': 'new' - } - return value - - - def do_step_2(self, cr, uid, ids, context=None): - """ - This action to excute step 2 - - """ - if not context: - context = {} - - data_obj = self.pool.get('ir.model.data') - - step2_form_view = data_obj._get_id(cr, uid, 'share', 'share_step2_form') - - if step2_form_view: - step2_form_view_id = data_obj.browse(cr, uid, step2_form_view, context=context).res_id - - step1_id = False - for this in self.browse(cr, uid, ids, context=context): - vals = { - 'user_type': this.user_type, - 'existing_user_ids': map(lambda x:x.id, this.user_ids), - 'new_user': this.new_user, - } - - context.update(vals) - value = { - 'name': _('Step:3 Sharing Wizard'), - 'view_type': 'form', - 'view_mode': 'form', - 'res_model': 'share.create', - 'view_id': False, - 'views': [(step2_form_view_id, 'form'), (False, 'tree'), (False, 'calendar'), (False, 'graph')], - 'type': 'ir.actions.act_window', - 'context': context, 'target': 'new' } - return value - - - def do_step_3(self, cr, uid, ids, context=None): - """ - This action to excute step 3 - - """ - if not context: - context = {} - - for this in self.browse(cr, uid, ids, context=context): - vals = { - 'access_mode': this.access_mode, - } - - context.update(vals) + def _create_share_group(self, cr, uid, wizard_data, context=None): group_obj = self.pool.get('res.groups') - user_obj = self.pool.get('res.users') - fields_obj = self.pool.get('ir.model.fields') - model_access_obj = self.pool.get('ir.model.access') - model_obj = self.pool.get('ir.model') - rule_obj = self.pool.get('ir.rule') - action_obj = self.pool.get('ir.actions.act_window') - - new_users = context.get('new_user', False) - action_id = context.get('action_id', False) - user_type = context.get('user_type', False) - access_mode = context.get('access_mode', False) - action = action_obj.browse(cr, uid, action_id, context=context) - active_model = action.res_model - - active_id = False #TODO: Pass record id of res_model of action - existing_user_ids = context.get('existing_user_ids', False) - domain = eval(context.get('domain', '[]')) - - # Create Share Group - share_group_name = '%s: %s' %('Sharing', active_model) - group_ids = group_obj.search(cr, uid, [('name','=',share_group_name)]) - group_id = group_ids and group_ids[0] or False - if not group_id: - group_id = group_obj.create(cr, uid, {'name': share_group_name, 'share': True}) - else: - group = group_obj.browse(cr, uid, group_id, context=context) - if not group.share: - raise osv.except_osv(_('Error'), _("Share Group is exits without sharing !")) - - # Create new user + share_group_name = '%s: %s (%d-%s)' %('Sharing', wizard_data.action_id.res_model, uid, time.time()) + # create share group without putting admin in it + return group_obj.create(cr, 1, {'name': share_group_name, 'share': True}, {'noadmin': True}) + def _create_new_share_users(self, cr, uid, wizard_data, group_id, context=None): + user_obj = self.pool.get('res.users') current_user = user_obj.browse(cr, uid, uid) user_ids = [] - if user_type == 'new' and new_users: - for new_user in new_users.split('\n'): - password = _generate_random_number() - user_id = user_obj.create(cr, uid, { + if wizard_data.user_type == 'new': + for new_user in wizard_data.new_users.split('\n'): + # attempt to show more user-friendly msg than default constraint error + existing = user_obj.search(cr, 1, [('login', '=', new_user)]) + if existing: + raise osv.except_osv(_('User already exists'), + _('This username (%s) already exists, perhaps data has already been shared with this person.\nYou may want to try selecting existing shared users instead.')) + user_id = user_obj.create(cr, 1, { 'login': new_user, - 'password': password, + 'password': generate_random_pass(), 'name': new_user, 'user_email': new_user, 'groups_id': [(6,0,[group_id])], - 'action_id': action_id, 'share': True, 'company_id': current_user.company_id and current_user.company_id.id }) user_ids.append(user_id) - context['new_user_ids'] = user_ids - - # Modify existing user - if user_type == 'existing': - user_obj.write(cr, uid, existing_user_ids , { - 'groups_id': [(4,group_id)], - 'action_id': action_id - }) - - - #ACCESS RIGHTS / IR.RULES COMPUTATION - - active_model_ids = model_obj.search(cr, uid, [('model','=',active_model)]) - active_model_id = active_model_ids and active_model_ids[0] or False - - def _get_relation(model_id, ttypes, new_obj=[]): - obj = [] - models = map(lambda x:x[1].model, new_obj) - field_ids = fields_obj.search(cr, uid, [('model_id','=',model_id),('ttype','in', ttypes)]) - for field in fields_obj.browse(cr, uid, field_ids, context=context): - if field.relation not in models: - relation_model_ids = model_obj.search(cr, uid, [('model','=',field.relation)]) - relation_model_id = relation_model_ids and relation_model_ids[0] or False - relation_model = model_obj.browse(cr, uid, relation_model_id, context=context) - obj.append((field.relation_field, relation_model)) - - if relation_model_id != model_id and field.ttype in ['one2many', 'many2many']: - obj += _get_relation(relation_model_id, [field.ttype], obj) - - return obj - - active_model = model_obj.browse(cr, uid, active_model_id, context=context) - obj0 = [(None, active_model)] - obj1 = _get_relation(active_model_id, ['one2many']) - obj2 = _get_relation(active_model_id, ['one2many', 'many2many']) - obj3 = _get_relation(active_model_id, ['many2one']) - for rel_field, model in obj1: - obj3 += _get_relation(model.id, ['many2one']) + return user_ids + def _setup_action_and_shortcut(self, cr, uid, wizard_data, user_ids, new_users, context=None): + menu_obj = self.pool.get('ir.ui.menu') + user_obj = self.pool.get('res.users') + menu_action_id = user_obj._get_menu(cr, uid, context=context) + values = { + 'name': (_('%s (Shared)') % wizard_data.action_id.name)[:64], + 'domain': wizard_data.domain, + 'context': wizard_data.action_id.context, + 'res_model': wizard_data.action_id.res_model, + 'view_mode': wizard_data.action_id.view_mode, + 'view_type': wizard_data.action_id.view_type, + 'search_view_id': wizard_data.action_id.search_view_id.id, + } + for user_id in user_ids: + action_id = menu_obj.create_shortcut(cr, user_id, values) + if new_users: + user_obj.write(cr, 1, [user_id], {'action_id': action_id}) + else: + user_obj.write(cr, 1, [user_id], {'action_id': menu_action_id}) + + def _get_recursive_relations(self, cr, uid, model, ttypes, relation_fields=None, suffix=None, context=None): + """Returns list of tuples representing recursive relationships of type ``ttypes`` starting from + model with ID ``model_id``. + + @param model: browsable model to start loading relationships from + @param ttypes: list of relationship types to follow (e.g: ['one2many','many2many']) + @param relation_fields: list of previously followed relationship tuples - to avoid duplicates + during recursion + @param suffix: optional suffix to append to the field path to reach the main object + """ + if relation_fields is None: + relation_fields = [] + local_rel_fields = [] + models = [x[1].model for x in relation_fields] + model_obj = self.pool.get('ir.model') + model_osv = self.pool.get(model.model) + for field in model_osv._columns.values() + [x[2] for x in model_osv._inherit_fields]: + if field._type in ttypes and field._obj not in models: + relation_model_id = model_obj.search(cr, uid, [('model','=',field._obj)])[0] + if field._type == 'one2many': + relation_field = '%s.%s'%(field._fields_id, suffix) if suffix else field._fields_id + else: + relation_field = None # TODO: add some filtering for m2m and m2o - not always possible... + model_browse = model_obj.browse(cr, uid, relation_model_id, context=context) + local_rel_fields.append((relation_field, model_browse)) + if relation_model_id != model.id and field._type in ['one2many', 'many2many']: + local_rel_fields += self._get_recursive_relations(cr, uid, model_browse, + [field._type], local_rel_fields, suffix=relation_field, context=context) + return local_rel_fields + + def _get_relationship_classes(self, cr, uid, model, context=None): + obj0 = [(None, model)] + obj1 = self._get_recursive_relations(cr, uid, model, ['one2many'], context=context) + obj2 = self._get_recursive_relations(cr, uid, model, ['one2many', 'many2many'], + context=context) + obj3 = self._get_recursive_relations(cr, uid, model, ['many2one'], context=context) + for dummy, model in obj1: + obj3 += self._get_recursive_relations(cr, uid, model, ['many2one'], context=context) + return obj0, obj1, obj2, obj3 + + def _get_access_map_for_groups_and_models(self, cr, uid, group_ids, model_ids, context=None): + model_access_obj = self.pool.get('ir.model.access') + user_right_ids = model_access_obj.search(cr, uid, + [('group_id', 'in', group_ids), ('model_id', 'in', model_ids)], + context=context) + user_access_matrix = {} + if user_right_ids: + for access_right in model_access_obj.browse(cr, uid, user_right_ids, context=context): + access_line = user_access_matrix.setdefault(access_right.model_id.model, set()) + for perm in FULL_ACCESS: + if getattr(access_right, perm, 0): + access_line.add(perm) + return user_access_matrix + + def _add_access_rights_for_share_group(self, cr, uid, group_id, mode, + fields_relations, context=None): + """Adds access rights to group_id on object models referenced in ``fields_relations``, + intersecting with access rights of current user to avoid granting too much rights + """ + model_access_obj = self.pool.get('ir.model.access') + user_obj = self.pool.get('res.users') + target_model_ids = [x[1].id for x in fields_relations] + perms_to_add = (mode == 'readonly') and READ_ONLY_ACCESS or FULL_ACCESS current_user = user_obj.browse(cr, uid, uid, context=context) - if access_mode == 'readonly': - res = [] - # intersect with read access rights of user running the - # wizard, to avoid adding more access than current - for group in current_user.groups_id: - for access_control in group.model_access: - if access_control.model_id.id in res: - continue - if access_control.perm_read: - res.append(access_control.model_id.id) - model_access_obj.create(cr, uid, { - 'name': 'Read Access of group %s on %s model'%(share_group_name, access_control.model_id.name), - 'model_id' : access_control.model_id.id, - 'group_id' : group_id, - 'perm_read' : True - }) - res = [] - for rel_field, model in obj0+obj1+obj2+obj3: - if model.id in res: - continue - res.append(model.id) - model_access_obj.create(cr, uid, { - 'name': 'Read Access of group %s on %s model'%(share_group_name, model.name), - 'model_id' : model.id, - 'group_id' : group_id, - 'perm_read' : True - }) - if access_mode == 'readwrite': - res = [] - for rel_field, model in obj0+obj1: - if model.id in res: - continue - res.append(model.id) - model_access_obj.create(cr, uid, { - 'name': 'Write Access of group %s on %s model'%(share_group_name, model.name), - 'model_id' : model.id, - 'group_id' : group_id, - 'perm_read' : True, - 'perm_write' : True, - 'perm_unlink' : True, - 'perm_create' : True, - }) - # intersect with access rights of user - # running the wizard, to avoid adding more access than current - - for group in current_user.groups_id: - for access_control in group.model_access: - if access_control.model_id.id in res: - continue - if access_control.perm_read: - res.append(access_control.model_id.id) - model_access_obj.create(cr, uid, { - 'name': 'Read Access of group %s on %s model'%(share_group_name, access_control.model_id.name), - 'model_id' : access_control.model_id.id, - 'group_id' : group_id, - 'perm_read' : True - }) - for rel_field, model in obj2+obj3: - if model.id in res: - continue - res.append(model.id) - model_access_obj.create(cr, uid, { - 'name': 'Read Access of group %s on %s model'%(share_group_name, model.name), - 'model_id' : model.id, - 'group_id' : group_id, - 'perm_read' : True - }) - # - # And on OBJ0, OBJ1, OBJ2, OBJ3: add all rules from groups of the user - # that is sharing in the many2many of the rules on the new group - # (rule must be copied instead of adding it if it contains a reference to uid - # or user.xxx so it can be replaced correctly) + current_user_access_map = self._get_access_map_for_groups_and_models(cr, uid, + [x.id for x in current_user.groups_id], target_model_ids, context=context) + group_access_map = self._get_access_map_for_groups_and_models(cr, uid, + [group_id], target_model_ids, context=context) + self.__logger.debug("Current user access matrix: %r", current_user_access_map) + self.__logger.debug("New group current access matrix: %r", group_access_map) + + # Create required rights if allowed by current user rights and not + # already granted + for dummy, model in fields_relations: + values = { + 'name': _('Copied access for sharing'), + 'group_id': group_id, + 'model_id': model.id, + } + current_user_access_line = current_user_access_map.get(model.model,set()) + existing_group_access_line = group_access_map.get(model.model,set()) + need_creation = False + for perm in perms_to_add: + if perm in current_user_access_line \ + and perm not in existing_group_access_line: + values.update({perm:True}) + group_access_map.setdefault(model.model, set()).add(perm) + need_creation = True + if need_creation: + model_access_obj.create(cr, 1, values) + self.__logger.debug("Creating access right for model %s with values: %r", model.model, values) + + def _link_or_copy_current_user_rules(self, cr, uid, group_id, fields_relations, context=None): + user_obj = self.pool.get('res.users') + rule_obj = self.pool.get('ir.rule') + current_user = user_obj.browse(cr, uid, uid, context=context) + completed_models = set() for group in current_user.groups_id: - res = [] - for rel_field, model in obj0+obj1+obj2+obj3: - if model.id in res: + for dummy, model in fields_relations: + if model.id in completed_models: continue - res.append(model.id) + completed_models.add(model.id) for rule in group.rule_groups: if rule.model_id == model.id: - rule_obj.copy(cr, uid, rule.id, default={ - 'name': '%s-%s'%(share_group_name, model.model), - 'groups': [(6,0,[group_id])] - }, context=context) - - rule_obj.create(cr, uid, { - 'name': '%s-%s'%(share_group_name, active_model.model), - 'model_id': active_model.id, - 'domain_force': domain, - 'groups': [(6,0,[group_id])] - }) - for rel_field, model in obj1: - obj1_domain = [] - for opr1, opt, opr2 in domain: - new_opr1 = '%s.%s'%(rel_field, opr1) - obj1_domain.append((new_opr1, opt, opr2)) - - rule_obj.create(cr, uid, { - 'name': '%s-%s'%(share_group_name, model.model), - 'model_id': model.id, - 'domain_force': obj1_domain, - 'groups': [(6,0,[group_id])] - }) - context['share_model'] = active_model.model - context['share_rec_id'] = active_id - - - data_obj = self.pool.get('ir.model.data') - - form_view = data_obj._get_id(cr, uid, 'share', 'share_result_form') - form_view_id = False - if form_view: - form_view_id = data_obj.browse(cr, uid, form_view, context=context).res_id + if 'user.' in rule.domain_force: + # Above pattern means there is likely a condition + # specific to current user, so we must copy the rule using + # the evaluated version of the domain. + # And it's better to copy one time too much than too few + rule_obj.copy(cr, 1, rule.id, default={ + 'name': '%s (%s)' %(rule.name, _('(Copy for sharing)')), + 'groups': [(6,0,[group_id])], + 'domain_force': rule.domain, # evaluated version! + }) + self.__logger.debug("Copying rule %s (%s) on model %s with domain: %s", rule.name, rule.id, model.model, rule.domain_force) + else: + # otherwise we can simply link the rule to keep it dynamic + rule_obj.write(cr, 1, [rule.id], { + 'groups': [(4,group_id)] + }) + self.__logger.debug("Linking rule %s (%s) on model %s with domain: %s", rule.name, rule.id, model.model, rule.domain_force) + + def _create_indirect_sharing_rules(self, cr, uid, wizard_data, group_id, fields_relations, context=None): + user_obj = self.pool.get('res.users') + current_user = user_obj.browse(cr, uid, uid, context=context) + rule_obj = self.pool.get('ir.rule') + try: + domain = safe_eval(wizard_data.domain) + if domain: + domain_expr = expression(domain) + for rel_field, model in fields_relations: + related_domain = [] + for element in domain: + if domain_expr._is_leaf(element): + left, operator, right = element + left = '%s.%s'%(rel_field, left) + element = left, operator, right + related_domain.append(element) + rule_obj.create(cr, 1, { + 'name': _('Indirect sharing filter created by user %s (%s) for group %s') % \ + (current_user.name, current_user.login, group_id), + 'model_id': model.id, + 'domain_force': str(related_domain), + 'groups': [(4,group_id)] + }) + self.__logger.debug("Created indirect rule on model %s with domain: %s", model.model, repr(related_domain)) + except Exception: + self.__logger.exception('Failed to create share access') + raise osv.except_osv(_('Sharing access could not be setup'), + _('Sorry, the current screen and filter you are trying to share are not supported at the moment.\nYou may want to try a simpler filter.')) + + def _create_result_lines(self, cr, uid, wizard_data, context=None): + user_obj = self.pool.get('res.users') + result_obj = self.pool.get('share.wizard.result.line') + share_root_url = wizard_data.share_root_url + format_url = '%(login)' in share_root_url and '%(password)' in share_root_url + existing_passwd_str = _('*usual password*') + if wizard_data.user_type == 'new': + for email in wizard_data.new_users.split('\n'): + user_id = user_obj.search(cr, 1, [('login', '=', email)], context=context) + password = user_obj.read(cr, 1, user_id[0], ['password'])['password'] + share_url = share_root_url % \ + {'login': email, + 'password': password} if format_url else share_root_url + result_obj.create(cr, uid, { + 'share_wizard_id': wizard_data.id, + 'login': email, + 'password': password, + 'share_url': share_url, + }, context=context) + else: + # existing users + for user in wizard_data.user_ids: + share_url = share_root_url % \ + {'login': email, + 'password': ''} if format_url else share_root_url + result_obj.create(cr, uid, { + 'share_wizard_id': wizard_data.id, + 'login': user.user_id.login, + 'password': existing_passwd_str, + 'share_url': share_url, + 'newly_created': False, + }, context=context) + + def go_step_2(self, cr, uid, ids, context=None): + wizard_data = self.browse(cr, uid, ids and ids[0], context=context) + assert wizard_data.action_id and wizard_data.access_mode and \ + ((wizard_data.user_type == 'new' and wizard_data.new_users) or \ + (wizard_data.user_type == 'existing' and wizard_data.user_ids)) + + # Create shared group and users + group_id = self._create_share_group(cr, uid, wizard_data, context=context) + user_obj = self.pool.get('res.users') + current_user = user_obj.browse(cr, uid, uid, context=context) + if wizard_data.user_type == 'new': + user_ids = self._create_new_share_users(cr, uid, wizard_data, group_id, context=context) + else: + user_ids = [x.user_id.id for x in wizard_data.user_ids] + # reset home action to regular menu as user needs access to multiple items + user_obj.write(cr, 1, user_ids, { + 'groups_id': [(4,group_id)], + }) + self._setup_action_and_shortcut(cr, uid, wizard_data, user_ids, + (wizard_data.user_type == 'new'), context=context) - value = { - 'name': _('Step:4 Share Users Detail'), + model_obj = self.pool.get('ir.model') + model_id = model_obj.search(cr, uid, [('model','=', wizard_data.action_id.res_model)])[0] + model = model_obj.browse(cr, uid, model_id, context=context) + + # ACCESS RIGHTS + # We have several classes of objects that should receive different access rights: + # Let: + # - [obj0] be the target model itself + # - [obj1] be the target model and all other models recursively accessible from + # obj0 via one2many relationships + # - [obj2] be the target model and all other models recursively accessible from + # obj0 via one2many and many2many relationships + # - [obj3] be all models recursively accessible from obj1 via many2one relationships + obj0, obj1, obj2, obj3 = self._get_relationship_classes(cr, uid, model, context=context) + mode = wizard_data.access_mode + + # Add access to [obj0] and [obj1] according to chosen mode + self._add_access_rights_for_share_group(cr, uid, group_id, mode, obj0, context=context) + self._add_access_rights_for_share_group(cr, uid, group_id, mode, obj1, context=context) + + # Add read-only access (always) to [obj2] and [obj3] + self._add_access_rights_for_share_group(cr, uid, group_id, 'readonly', obj2, context=context) + self._add_access_rights_for_share_group(cr, uid, group_id, 'readonly', obj3, context=context) + + + # IR.RULES + # A. On [obj0]: 1 rule with domain of shared action + # B. For each model in [obj1]: 1 rule in the form: + # many2one_rel.domain_of_obj0 + # where many2one_rel is the many2one used in the definition of the + # one2many, and domain_of_obj0 is the sharing domain + # For example if [obj0] is project.project with a domain of + # ['id', 'in', [1,2]] + # then we will have project.task in [obj1] and we need to create this + # ir.rule on project.task: + # ['project_id.id', 'in', [1,2]] + # C. And on [obj0], [obj1], [obj2], [obj3]: add all rules from all groups of + # the user that is sharing + # (Warning: rules must be copied instead of linked if they contain a reference + # to uid, and it must be replaced correctly) + rule_obj = self.pool.get('ir.rule') + # A. + rule_obj.create(cr, 1, { + 'name': _('Sharing filter created by user %s (%s) for group %s') % \ + (current_user.name, current_user.login, group_id), + 'model_id': model.id, + 'domain_force': wizard_data.domain, + 'groups': [(4,group_id)] + }) + # B. + self._create_indirect_sharing_rules(cr, uid, wizard_data, group_id, obj1, context=context) + # C. + all_relations = obj0 + obj1 + obj2 + obj3 + self._link_or_copy_current_user_rules(cr, uid, group_id, all_relations, context=context) + + # so far, so good -> populate summary results and return them + self._create_result_lines(cr, uid, wizard_data, context=context) + + dummy, step2_form_view_id = self.pool.get('ir.model.data').get_object_reference(cr, uid, 'share', 'share_step2_form') + return { + 'name': _('Sharing Wizard - Step 2'), 'view_type': 'form', 'view_mode': 'form', - 'res_model': 'share.result', + 'res_model': 'share.wizard', 'view_id': False, - 'views': [(form_view_id, 'form'), (False, 'tree'), (False, 'calendar'), (False, 'graph')], + 'res_id': ids[0], + 'views': [(step2_form_view_id, 'form'), (False, 'tree'), (False, 'calendar'), (False, 'graph')], 'type': 'ir.actions.act_window', - 'context': context, 'target': 'new' } - return value -share_create() + def send_emails(self, cr, uid, ids, context=None): + user = self.pool.get('res.users').browse(cr, uid, uid, context=context) + if not user.user_email: + raise osv.except_osv(_('Email required'), _('The current user must have an email address configured in User Preferences to be able to send outgoing emails.')) + for wizard_data in self.browse(cr, uid, ids, context=context): + for result_line in wizard_data.result_line_ids: + email_to = result_line.login + subject = _('%s has shared OpenERP %s information with you') % (user.name, wizard_data.action_id.name) + body = _("Dear,\n\n") + subject + "\n\n" + body += _("To access it, you can go to the following URL:\n %s") % wizard_data.share_root_url + body += "\n\n" + if result_line.newly_created: + body += _("You may use the following login and password to get access to this protected area:") + "\n" + body += "%s: %s" % (_("Username"), result_line.login) + "\n" + body += "%s: %s" % (_("Password"), result_line.password) + "\n" + else: + body += _("This additional data has been automatically added to your current access.\n") + body += _("You may use your existing login and password to view it. As a reminder, your login is %s.\n") % result_line.login + + if not tools.email_send( + user.user_email, + email_to, + subject, + body): + self.__logger.warning('Failed to send sharing email from %s to %s', user.user_email, email_to) + return {'type': 'ir.actions.act_window_close'} +share_create() -class share_result(osv.osv_memory): - _name = "share.result" +class share_user_ref(osv.osv_memory): + _name = 'share.wizard.user' + _rec_name = 'user_id' _columns = { - 'users': fields.text("Users", readonly=True), - } - - - - def do_send_email(self, cr, uid, ids, context=None): - user_obj = self.pool.get('res.users') - if not context: - context={} - existing_user_ids = context.get('existing_user_ids', []) - new_user_ids = context.get('new_user_ids', []) - share_url = tools.config.get('share_root_url', False) - user = user_obj.browse(cr, uid, uid, context=context) - for share_user in user_obj.browse(cr, uid, new_user_ids+existing_user_ids, context=context): - email_to = share_user.user_email - subject = '%s wants to share private data with you' %(user.name) - body = """ - Dear, - - %s wants to share private data from OpenERP with you! - """%(user.name) - if share_url: - body += """ - To view it, you can access the following URL: - %s - """%(user.name, share_url) - if share_user.id in new_user_ids: - body += """ - You may use the following login and password to get access to this - protected area: - login: %s - password: %s - """%(user.login, user.password) - elif share_user.id in existing_user_ids: - body += """ - You may use your existing login and password to get access to this - additional data. As a reminder, your login is %s. - """%(user.name) - - flag = tools.email_send( - user.user_email, - email_to, - subject, - body - ) - return flag - - - def default_get(self, cr, uid, fields, context=None): - """ - To get default values for the object. - """ + 'user_id': fields.many2one('res.users', 'Users', required=True, domain=[('share', '=', True)]), + 'share_wizard_id': fields.many2one('share.wizard', 'Share Wizard', required=True), + } +share_user_ref() - res = super(share_result, self).default_get(cr, uid, fields, context=context) - user_obj = self.pool.get('res.users') - if not context: - context={} - existing_user_ids = context.get('existing_user_ids', []) - new_user_ids = context.get('new_user_ids', []) - share_url = tools.config.get('share_root_url', False) - if 'users' in fields: - users = [] - for user in user_obj.browse(cr, uid, new_user_ids): - txt = 'Login: %s Password: %s' %(user.login, user.password) - if share_url: - txt += ' Share URL: %s' %(share_url) - users.append(txt) - for user in user_obj.browse(cr, uid, existing_user_ids): - txt = 'Login: %s' %(user.login) - if share_url: - txt += ' Share URL: %s' %(share_url) - users.append(txt) - res['users'] = '\n'.join(users) - return res - -share_result() +class share_result_line(osv.osv_memory): + _name = 'share.wizard.result.line' + _rec_name = 'login' + _columns = { + 'login': fields.char('Username', size=64, required=True, readonly=True), + 'password': fields.char('Password', size=64, readonly=True), + 'share_url': fields.char('Share URL', size=512, required=True), + 'share_wizard_id': fields.many2one('share.wizard', 'Share Wizard', required=True), + 'newly_created': fields.boolean('Newly created', readonly=True), + } + _defaults = { + 'newly_created': True, + } +share_result_line() diff --git a/addons/share/wizard/share_wizard_view.xml b/addons/share/wizard/share_wizard_view.xml index 159583eecbb853afe5c4cf456a46bbd45116f82e..e6cade91c841e8bb6999df45c9ae0377f58e1a6e 100644 --- a/addons/share/wizard/share_wizard_view.xml +++ b/addons/share/wizard/share_wizard_view.xml @@ -1,106 +1,125 @@ <?xml version="1.0" encoding="utf-8"?> <openerp> - <data> + <data> - <record id="share_step0_form" model="ir.ui.view"> + <record id="share_step0_form" model="ir.ui.view"> <field name="name">share.step0.form</field> - <field name="model">share.create</field> + <field name="model">share.wizard</field> <field name="type">form</field> <field name="arch" type="xml"> - <form string="Share"> - <separator colspan="4" string="Step 1: Chose the action and the additional domain"/> - <field name="action_id"/> - <field name="domain"/> - <separator colspan="4"/> - <group col="2" colspan="4"> - <button special="cancel" string="Cancel" icon='gtk-cancel'/> - <button name="do_step_1" string="Next" colspan="1" type="object" icon="gtk-go-forward"/> - </group> - </form> + <form string="Share wizard: step 0"> + <separator colspan="4" + string="Please select the action that opens the screen containing the data you want to share."/> + <field name="action_id" colspan="4"/> + <separator colspan="4" + string="Optionally, you may specify an additional domain restriction that will be applied to the shared data."/> + <field name="domain"/> + <separator colspan="4"/> + <group colspan="4"> + <button special="cancel" string="Cancel" icon='gtk-cancel'/> + <button name="go_step_1" string="Next" colspan="1" type="object" icon="gtk-go-forward"/> + </group> + </form> </field> </record> <record id="share_step1_form" model="ir.ui.view"> <field name="name">share.step1.form</field> - <field name="model">share.create</field> + <field name="model">share.wizard</field> <field name="type">form</field> <field name="arch" type="xml"> - <form string="Share"> - <separator colspan="4" string="Step 2: Chose the User type"/> - <field name="user_type"/> - <newline/> - <group colspan="4" attrs="{'invisible':[('user_type','!=','existing')]}"> - <separator colspan="4" string="Exising Users"/> - <field colspan="4" nolabel="1" name="user_ids" domain="[('share_user','=',True)]"/> - </group> - <group colspan="4" attrs="{'invisible':[('user_type','!=','new')]}"> - <separator colspan="4" string="New Users"/> - <field colspan="4" nolabel="1" name="new_user"/> - </group> - <separator colspan="4"/> - <group col="3" colspan="4"> - <button special="cancel" string="Cancel" icon='gtk-cancel'/> - <button name="do_step_2" string="Next" colspan="1" type="object" icon="gtk-go-forward"/> - </group> - </form> + <form string="Share wizard: step 1"> + <separator colspan="4" string="Who would you want to share this data with?"/> + <field name="user_type"/> + <group colspan="4" attrs="{'invisible':[('user_type','!=','existing')]}"> + <separator colspan="4" string="Existing External Users"/> + <field colspan="4" nolabel="1" name="user_ids" mode="tree"> + <tree editable="bottom" string=""> + <field name="user_id"/> + </tree> + </field> + </group> + <group colspan="4" attrs="{'invisible':[('user_type','!=','new')]}"> + <separator colspan="4" string="New Users (please provide one e-mail address per line below)"/> + <field colspan="4" nolabel="1" name="new_users"/> + </group> + <separator colspan="4" string="Select the desired shared access mode:"/> + <group colspan="4"> + <field name="access_mode"/> + </group> + <separator colspan="4"/> + <group colspan="4"> + <button special="cancel" string="Cancel" icon='gtk-cancel'/> + <button name="go_step_2" string="Finish" colspan="1" type="object" icon="gtk-go-forward"/> + </group> + </form> </field> </record> <record id="share_step2_form" model="ir.ui.view"> <field name="name">share.step2.form</field> - <field name="model">share.create</field> + <field name="model">share.wizard</field> <field name="type">form</field> <field name="arch" type="xml"> - <form string="Share"> - <separator colspan="4" string="Step 3: Chose Access Mode"/> - <group colspan="4"> - <field name="access_mode"/> - </group> - <separator colspan="4"/> - <group col="3" colspan="4"> - <button special="cancel" string="Cancel" icon='gtk-cancel'/> - <button name="do_step_3" string="Next" colspan="1" type="object" icon="gtk-go-forward"/> - </group> - </form> + <form string="Share wizard: step 2"> + <separator colspan="4" string="Congratulations, you have successfully setup a new shared access!"/> + <label colspan="4" string="Here is a summary of the access points you have just created:"/> + <field name="result_line_ids" nolabel="1" colspan="4" mode="tree"> + <tree string="Summary"> + <field name="login"/> + <field name="password"/> + <field name="share_url"/> + </tree> + <form string="Access info"> + <field name="login"/> + <field name="password"/> + <field name="share_url" colspan="4"/> + </form> + </field> + <field colspan="4" name="share_root_url"/> + <separator colspan="4"/> + <group colspan="4"> + <button special="cancel" string="Close" icon='gtk-ok'/> + <button name="send_emails" string="Send Email Notification(s)" colspan="1" type="object" icon="gtk-go-forward"/> + </group> + </form> </field> </record> - - - <record id="action_share_wizard" model="ir.actions.act_window"> - <field name="name">Share Access Rules</field> + <!-- action for manual launch from menuitem. context may contain: + - 'action_id' (id of action) + - 'domain' (string expression for full domain to apply as sent to server, + with dynamic data like 'uid' replaced by actual value (i.e. after eval)!) + - 'share_root_url' : URL for direct access to share page (may include %(login) and %(password) placeholders) + --> + <record id="action_share_wizard" model="ir.actions.act_window"> + <field name="name">Share Wizard</field> <field name="type">ir.actions.act_window</field> - <field name="res_model">share.create</field> + <field name="res_model">share.wizard</field> <field name="view_type">form</field> <field name="view_mode">form</field> - <field name="view_id" ref="share_step0_form"/> + <field name="view_id" ref="share_step0_form"/> <field name="target">new</field> - </record> - - <menuitem action="action_share_wizard" id="menu_action_share_wizard" parent="base.menu_security"/> - - - <record id="share_result_form" model="ir.ui.view"> - <field name="name">share.result.form</field> - <field name="model">share.result</field> - <field name="type">form</field> - <field name="arch" type="xml"> - <form string="Share"> - <separator colspan="4" string="Step 4: Share Users Detail"/> - <field name="users" colspan="4" nolabel="1"/> - <separator colspan="4"/> - <group col="2" colspan="4"> - <button special="cancel" string="Cancel" icon='gtk-cancel'/> - <button name="do_send_email" string="Send Email" type="object" icon="gtk-apply"/> - </group> - </form> - </field> </record> - - + <!-- action for direct launch from client widget with context providing: + - 'action_id' (id of action) + - 'domain' (string expression for full domain to apply as sent to server, + with dynamic data like 'uid' replaced by actual value (i.e. after eval)!) + - 'share_root_url' : URL for direct access to share page (may include %(login) and %(password) placeholders) + --> + <record id="action_share_wizard_step1" model="ir.actions.act_window"> + <field name="name">Share Wizard</field> + <field name="type">ir.actions.act_window</field> + <field name="res_model">share.wizard</field> + <field name="view_type">form</field> + <field name="view_mode">form</field> + <field name="view_id" ref="share_step1_form"/> + <field name="target">new</field> + </record> - + <!-- temporarily under Low-Level-Actions --> + <menuitem action="action_share_wizard" id="menu_action_share_wizard" parent="base.next_id_4" groups="group_share_user" icon="terp-rating-rated"/> - </data> + </data> </openerp> diff --git a/addons/stock/board_warehouse_view.xml b/addons/stock/board_warehouse_view.xml index ac8acb2922fd792e4c8bd47201da70e77e699547..fd68f0a2eb58101c2a38fc88920dc327b1e0542f 100644 --- a/addons/stock/board_warehouse_view.xml +++ b/addons/stock/board_warehouse_view.xml @@ -6,7 +6,7 @@ </record> - <record id="action_incoming_product_board" model="ir.actions.act_window"> + <record id="action_incoming_product_board" model="ir.actions.act_window"> <field name="name">Incoming Product</field> <field name="res_model">stock.move</field> <field name="type">ir.actions.act_window</field> @@ -16,33 +16,33 @@ <field name="view_id" ref="stock.view_move_tree_reception_picking_board"/> </record> - <record id="action_outgoing_product_board" model="ir.actions.act_window"> + <record id="action_outgoing_product_board" model="ir.actions.act_window"> <field name="name">Outgoing Product</field> <field name="res_model">stock.move</field> <field name="type">ir.actions.act_window</field> <field name="view_type">form</field> <field name="view_mode">tree,form</field> <field name="domain">['|','&',('picking_id','=',False),('location_dest_id.usage', 'in', ['customer','supplier']),'&',('picking_id','!=',False),('picking_id.type','=','out')]</field> - <field name="view_id" ref="stock.view_move_tree_reception_picking_board"/> + <field name="view_id" ref="stock.view_move_tree_reception_picking_board"/> </record> - <record model="ir.actions.act_window" id="action_stock_incoming_product_delay"> - <field name="res_model">report.stock.move</field> - <field name="view_type">form</field> - <field name="view_mode">graph,tree</field> - <field name="domain">[('type','=','in')]</field> - <field name="view_id" ref="stock.view_stock_graph_board"></field> - <field name="context">{'search_default_month-1':1,'search_default_in':1,'group_by':['day'], 'group_by_no_leaf':1}</field> + <record model="ir.actions.act_window" id="action_stock_incoming_product_delay"> + <field name="res_model">report.stock.move</field> + <field name="view_type">form</field> + <field name="view_mode">graph,tree</field> + <field name="domain">[('type','=','in')]</field> + <field name="view_id" ref="stock.view_stock_graph_board"></field> + <field name="context">{'search_default_month-1':1,'search_default_in':1,'group_by':['day'], 'group_by_no_leaf':1}</field> </record> - <record model="ir.actions.act_window" id="action_stock_outgoing_product_delay"> - <field name="res_model">report.stock.move</field> - <field name="view_type">form</field> - <field name="view_mode">graph,tree</field> - <field name="domain">[('type','=','out')]</field> - <field name="view_id" ref="stock.view_stock_graph_board"></field> - <field name="context">{'search_default_month-1':1,'search_default_out':1,'group_by':['day'], 'group_by_no_leaf':1}</field> + <record model="ir.actions.act_window" id="action_stock_outgoing_product_delay"> + <field name="res_model">report.stock.move</field> + <field name="view_type">form</field> + <field name="view_mode">graph,tree</field> + <field name="domain">[('type','=','out')]</field> + <field name="view_id" ref="stock.view_stock_graph_board"></field> + <field name="context">{'search_default_month-1':1,'search_default_out':1,'group_by':['day'], 'group_by_no_leaf':1}</field> </record> - <record id="board_warehouse_form" model="ir.ui.view"> + <record id="board_warehouse_form" model="ir.ui.view"> <field name="name">board.warehouse.form</field> <field name="model">board.board</field> <field name="type">form</field> @@ -50,8 +50,8 @@ <form string="Warehouse board"> <hpaned position="200"> <child1> - <action colspan="4" name="%(action_incoming_product_board)d" string="Incoming Product" /> - <action colspan="4" name="%(action_outgoing_product_board)d" string="Outgoing Product" /> + <action colspan="4" name="%(action_incoming_product_board)d" string="Incoming Product" /> + <action colspan="4" name="%(action_outgoing_product_board)d" string="Outgoing Product" /> </child1> <child2> @@ -71,9 +71,9 @@ <field name="view_id" ref="board_warehouse_form"/> </record> - <menuitem id="menu_dashboard_stock" name="Dashboard" sequence="0" parent="stock.next_id_61"/> + <menuitem id="menu_dashboard_stock" name="Dashboard" sequence="0" parent="stock.next_id_61"/> <menuitem action="open_board_warehouse" icon="terp-graph" groups="group_stock_manager" id="menu_board_warehouse" parent="menu_dashboard_stock" sequence="1"/> - <menuitem icon="terp-stock" id="stock.menu_stock_root" name="Warehouse" sequence="5" groups="group_stock_manager" action="open_board_warehouse"/> + <menuitem icon="terp-stock" id="stock.menu_stock_root" name="Warehouse" sequence="5" groups="group_stock_manager" action="open_board_warehouse"/> </data> </openerp> diff --git a/addons/stock/product.py b/addons/stock/product.py index e1d4c71b46c4b07f952a92807d16d982c777aa69..ddb582f4a3c91f9a7d97ae0b25aa510179391dab 100644 --- a/addons/stock/product.py +++ b/addons/stock/product.py @@ -188,6 +188,7 @@ class product_product(osv.osv): if not ids: return res + # TODO: write in more ORM way, less queries, more pg84 magic if context.get('shop', False): cr.execute('select warehouse_id from sale_shop where id=%s', (int(context['shop']),)) res2 = cr.fetchone() @@ -246,6 +247,7 @@ class product_product(osv.osv): date_values = [to_date] + # TODO: perhaps merge in one query. if date_values: where.append(tuple(date_values)) if 'in' in what: diff --git a/addons/stock/product_view.xml b/addons/stock/product_view.xml index 60fab009d0e0a149e6ed82a3ffc6870f75c81745..35715a9e1fb16dbc3d7f7dc2f7eb5c54bcf6cbba 100644 --- a/addons/stock/product_view.xml +++ b/addons/stock/product_view.xml @@ -60,9 +60,11 @@ <field name="inherit_id" ref="product.product_normal_form_view"/> <field name="arch" type="xml"> <field name="standard_price" position="replace"> - <group col="4" colspan="2"> - <field name="standard_price" readonly="1"/> - <button name="%(action_view_change_standard_price)d" string="Change Price" type="action" icon="gtk-execute" attrs="{'readonly':[('cost_method','=','average')]}"/> + <label string="Cost Price:" align="1.0"/> + <group col="2" colspan="1"> + <field name="standard_price" attrs="{'readonly':[('cost_method','=','average')]}" nolabel="1"/> + <button name="%(action_view_change_standard_price)d" string="Update" + type="action" icon="gtk-execute" attrs="{'invisible':[('cost_method','<>','average')]}"/> </group> </field> </field> diff --git a/addons/stock/report/report_stock_move_view.xml b/addons/stock/report/report_stock_move_view.xml index 34e6e53dbdfbd8f7f81d8385ff34013162240b5f..507f475a13eef0ed2252c68fc5e85a49a969b078 100644 --- a/addons/stock/report/report_stock_move_view.xml +++ b/addons/stock/report/report_stock_move_view.xml @@ -143,6 +143,7 @@ <field name="view_mode">tree,graph</field> <field name="search_view_id" ref="view_stock_search"/> <field name="context">{'full':'1','contact_display': 'partner','search_default_done':1, 'search_default_month':1, 'search_default_group_type':1, 'group_by': [], 'group_by_no_leaf':1,}</field> + <field name="help">Moves Analysis allows you to easily check and analyse your company stock moves. Use this report when you want to analyse the different routes taken by your products and inventory management performance.</field> </record> <menuitem action="action_stock_move_report" id="menu_action_stock_move_report" parent="next_id_61" sequence="3"/> @@ -240,8 +241,9 @@ <field name="view_mode">tree,graph</field> <field name="search_view_id" eval="False"/> <field name="context">{'contact_display': 'partner', 'search_default_real':1, 'search_default_location_type_internal':1,'search_default_group_product':1,'group_by':[], 'group_by_no_leaf':1}</field> + <field name="help">Inventory Analysis allows you to easily check and analyse your company stock levels. Sort and group by selection criteria in order to better analyse and manage your company activities.</field> </record> - <menuitem action="action_stock_inventory_report" id="menu_action_stock_inventory_report" parent="next_id_61" sequence="4" groups="base.group_system,base.group_user"/> + <menuitem action="action_stock_inventory_report" id="menu_action_stock_inventory_report" parent="next_id_61" sequence="4" groups="base.group_user"/> </data> diff --git a/addons/stock/report/report_stock_view.xml b/addons/stock/report/report_stock_view.xml index cb690cea931fb198b4f5d83fb1eb2dcc9d1e38ff..0fc7f206c6b8bf3815aa9c97bc5fcfdf28f30d55 100644 --- a/addons/stock/report/report_stock_view.xml +++ b/addons/stock/report/report_stock_view.xml @@ -67,6 +67,7 @@ <field name="view_type">form</field> <field name="context">{'search_default_stockable':1}</field> <field name="view_mode">tree,form</field> + <field name="help">Display the last inventories done on your products and easily sort them with specific filtering criteria. If you do frequent and partial inventories, you need this report in order to ensure that the stock of each product is controlled at least once a year.</field> </record> <menuitem parent="next_id_61" action="action_stock_line_date" id="menu_report_stock_line_date" sequence="2"/> diff --git a/addons/stock/security/ir.model.access.csv b/addons/stock/security/ir.model.access.csv index e879a03e9e1831026c50167ea30ab0372d2b668c..4d9c44edd79abf59b7372efbedd74c821085e6de 100644 --- a/addons/stock/security/ir.model.access.csv +++ b/addons/stock/security/ir.model.access.csv @@ -9,40 +9,26 @@ "access_stock_journal_manager","stock.journal.manager","model_stock_journal","stock.group_stock_manager",1,1,1,1 "access_stock_tracking_user","stock.tracking user","model_stock_tracking","stock.group_stock_user",1,1,1,1 "access_stock_tracking_manager","stock.tracking manager","model_stock_tracking","stock.group_stock_manager",1,0,0,0 -"access_stock_tracking_system","stock.tracking systen","model_stock_tracking","base.group_system",1,0,0,0 "access_stock_picking_user","stock.picking user","model_stock_picking","stock.group_stock_user",1,1,1,1 "access_stock_picking_manager","stock.picking manager","model_stock_picking","stock.group_stock_manager",1,0,0,0 -"access_stock_picking_system","stock.picking system","model_stock_picking","base.group_system",1,0,0,0 "access_stock_production_lot_manager","stock.production.lot manager","model_stock_production_lot","stock.group_stock_manager",1,0,0,0 -"access_stock_production_lot_system","stock.production.lot system","model_stock_production_lot","base.group_system",1,0,0,0 "access_stock_production_lot_user","stock.production.lot user","model_stock_production_lot","stock.group_stock_user",1,1,1,1 "access_stock_production_lot_revision","stock.production.lot.revision","model_stock_production_lot_revision","stock.group_stock_user",1,1,1,1 "access_stock_move_manager","stock.move manager","model_stock_move","stock.group_stock_manager",1,0,0,0 "access_stock_move_user","stock.move user","model_stock_move","stock.group_stock_user",1,1,1,1 -"access_stock_move_system","stock.move system","model_stock_move","base.group_system",1,0,0,0 "access_stock_inventory_user","stock.inventory user","model_stock_inventory","stock.group_stock_user",1,1,1,1 -"access_stock_inventory_system","stock.inventory system","model_stock_inventory","base.group_system",1,0,0,0 "access_stock_inventory_manager","stock.inventory manager","model_stock_inventory","stock.group_stock_manager",1,0,0,0 "access_stock_inventory_line_user","stock.inventory.line user","model_stock_inventory_line","stock.group_stock_user",1,1,1,1 "access_stock_inventory_line_manager","stock.inventory.line manager","model_stock_inventory_line","stock.group_stock_manager",1,0,0,0 -"access_stock_inventory_line_system","stock.inventory.line system","model_stock_inventory_line","base.group_system",1,0,0,0 "access_stock_report_prodlots","stock.report.prodlots","model_stock_report_prodlots","stock.group_stock_manager",1,0,0,0 "access_stock_location_product_manager","stock.location product manager","model_stock_location","product.group_product_manager",1,0,0,0 "access_stock_lines_date_user","report.stock.lines.date user","model_report_stock_lines_date","stock.group_stock_user",1,0,0,0 "access_stock_lines_date_manager","report.stock.lines.date manager","model_report_stock_lines_date","stock.group_stock_manager",1,1,1,1 -"access_stock_lines_date_system","report.stock.lines.date system","model_report_stock_lines_date","base.group_system",1,0,0,0 "access_stock_report_tracklots","stock.report.tracklots","model_stock_report_tracklots","stock.group_stock_user",1,1,1,1 "access_report_stock_move_user","report.stock.move user","model_report_stock_move","stock.group_stock_user",1,0,0,0 -"access_report_stock_move_system","report.stock.move system","model_report_stock_move","base.group_system",1,0,0,0 "access_report_stock_move_manager","report.stock.move manager","model_report_stock_move","stock.group_stock_manager",1,1,1,1 "access_report_stock_inventory_user","report.stock.inventory user","model_report_stock_inventory","stock.group_stock_user",1,1,1,1 "access_report_stock_inventory_manager","report.stock.inventory manager","model_report_stock_inventory","stock.group_stock_manager",1,1,1,1 -"access_report_stock_inventory_system","report.stock.inventory system","model_report_stock_inventory","base.group_system",1,0,0,0 -"access_stock_warehouse_system","stock.warehouse.system","model_stock_warehouse","base.group_system",1,1,1,1 -"access_stock_location_system","stock.location.system","model_stock_location","base.group_system",1,1,1,1 -"access_stock_journal_system","stock.journal.system","model_stock_journal","base.group_system",1,1,1,1 -"access_product_product_stock","product_product_stock","product.model_product_product","base.group_system",1,0,0,0 -"access_product_template_stock_system","product.template stock system","product.model_product_template","base.group_system",1,0,0,0 "access_product_product_stock_user","product_product_stock_user","product.model_product_product","stock.group_stock_user",1,1,1,1 "access_product_template_stock_user","product.template stock user","product.model_product_template","stock.group_stock_user",1,1,1,1 "access_product_product_stock_manager","product_product_stock_manager","product.model_product_product","stock.group_stock_manager",1,0,0,0 diff --git a/addons/stock/security/stock_security.xml b/addons/stock/security/stock_security.xml index 60be468d17efec918ccb9b5bf06ee419fd1cc5c2..717486413c6b2ba3526d305f0f51eb8d9a9c4305 100644 --- a/addons/stock/security/stock_security.xml +++ b/addons/stock/security/stock_security.xml @@ -9,10 +9,6 @@ <field name="name">Warehouse / User</field> </record> - <record model='ir.ui.menu' id='menu_stock_root'> - <field name="groups_id" eval="[(6,0,[ref('group_stock_manager'),ref('group_stock_user'),ref('base.group_system')])]"/> - </record> - <!-- multi --> <record model="ir.rule" id="stock_picking_rule"> diff --git a/addons/stock/stock.py b/addons/stock/stock.py index f1122640424231423e3ad45df952bd8c772f6e3d..831b1dafcb50e7c892ecf98dc341d299af93a0fb 100644 --- a/addons/stock/stock.py +++ b/addons/stock/stock.py @@ -632,7 +632,7 @@ class stock_picking(osv.osv): 'move_lines': fields.one2many('stock.move', 'picking_id', 'Internal Moves', states={'done': [('readonly', True)], 'cancel': [('readonly', True)]}), 'auto_picking': fields.boolean('Auto-Picking'), 'address_id': fields.many2one('res.partner.address', 'Address', help="Address of partner"), - 'partner_id': fields.related('address_id','partner_id',type='many2one',relation='res.partner',string='Partner',store=True), + 'partner_id': fields.related('address_id','partner_id',type='many2one',relation='res.partner',string='Partner'), 'invoice_state': fields.selection([ ("invoiced", "Invoiced"), ("2binvoiced", "To Be Invoiced"), @@ -1247,23 +1247,25 @@ class stock_picking(osv.osv): @param ids: List of Picking Ids @param context: A standard dictionary for contextual values """ - msg='' for pick in self.browse(cr, uid, ids, context=context): + msg='' + if pick.auto_picking: + continue type_list = { - 'out':'Picking List', - 'in':'Reception', - 'internal': 'Internal picking', + 'out':_("Delivery Order"), + 'in':_('Reception'), + 'internal': _('Internal picking'), } - message = type_list.get(pick.type, _('Document')) + " '" + (pick.name or 'n/a') + "' " + message = type_list.get(pick.type, _('Document')) + " '" + (pick.name or '?') + "' " if pick.min_date: - msg=datetime.strptime(pick.min_date, '%Y-%m-%d %H:%M:%S').strftime('%Y-%m-%d') + "'." + msg= _(' for the ')+ datetime.strptime(pick.min_date, '%Y-%m-%d %H:%M:%S').strftime('%m/%d/%Y') state_list = { - 'confirmed': "is scheduled for the '" + msg , - 'assigned': 'is ready to process.', - 'cancel': 'is Cancelled.', - 'done': 'is processed.', - 'draft':'is draft.', - } + 'confirmed': _("is scheduled") + msg +'.', + 'assigned': _('is ready to process.'), + 'cancel': _('is cancelled.'), + 'done': _('is done.'), + 'draft':_('is in draft state.'), + } message += state_list[pick.state] self.log(cr, uid, pick.id, message) return True @@ -1997,7 +1999,6 @@ class stock_move(osv.osv): for pick_id in picking_ids: wf_service.trg_write(uid, 'stock.picking', pick_id, cr) - picking_obj.log_picking(cr, uid, picking_ids, context=context) return True def _create_account_move_line(self, cr, uid, move, src_account_id, dest_account_id, reference_amount, reference_currency_id, context=None): diff --git a/addons/stock/stock_demo.xml b/addons/stock/stock_demo.xml index bce4de8b5939b2e21f1a581db462c74238db31d2..bdc11f208ca3f58ae91489c4403d55fbe052424d 100644 --- a/addons/stock/stock_demo.xml +++ b/addons/stock/stock_demo.xml @@ -244,7 +244,7 @@ </record> <record id="stock_warehouse_shop1" model="stock.warehouse"> <field name="lot_output_id" ref="stock.stock_location_output"/> - <field eval=""""Shop 2"""" name="name"/> + <field name="name">Shop 2</field> <field name="lot_stock_id" ref="stock_location_shop1"/> <field name="partner_address_id" ref="res_partner_address_eric0"/> <field name="company_id" ref="res_company_tinyshop0"/> @@ -262,9 +262,8 @@ <field name="type">out</field> <field name="move_type">direct</field> <field name="invoice_state">2binvoiced</field> - <field name="address_id" ref="base.main_address"/> + <field name="address_id" ref="res_partner_address_fabien0"/> <field name="company_id" ref="base.main_company"/> - <field name="partner_id" ref="base.main_partner"/> </record> </data> </openerp> diff --git a/addons/stock/stock_view.xml b/addons/stock/stock_view.xml index c92463b56779809bbbc47df5006061b4ab9d7e68..9a53b6d01d2c7bb984866f2bf99718dd94490657 100644 --- a/addons/stock/stock_view.xml +++ b/addons/stock/stock_view.xml @@ -3,12 +3,12 @@ <data> <menuitem icon="terp-stock" id="menu_stock_root" name="Warehouse" groups="group_stock_manager,group_stock_user" sequence="5"/> - <menuitem id="menu_stock_warehouse_mgmt" name="Warehouse Management" parent="menu_stock_root" sequence="1" groups="group_stock_manager,group_stock_user,base.group_extended"/> + <menuitem id="menu_stock_warehouse_mgmt" name="Warehouse Management" parent="menu_stock_root" sequence="1" groups="base.group_extended"/> <menuitem id="menu_stock_products_moves" name="Products Moves" parent="menu_stock_root" sequence="2"/> <menuitem id="menu_stock_product" name="Product" parent="menu_stock_root" sequence="6"/> <menuitem action="product.product_normal_action" id="menu_stock_products_menu" parent="menu_stock_product" sequence="1"/> - <menuitem id="menu_stock_configuration" name="Configuration" parent="menu_stock_root" sequence="15" groups="group_stock_manager,base.group_system"/> - <menuitem id="menu_warehouse_config" name="Warehouse Management" parent="menu_stock_configuration" sequence="1" groups="group_stock_manager,base.group_system"/> + <menuitem id="menu_stock_configuration" name="Configuration" parent="menu_stock_root" sequence="15" groups="group_stock_manager"/> + <menuitem id="menu_warehouse_config" name="Warehouse Management" parent="menu_stock_configuration" sequence="1" groups="group_stock_manager"/> <menuitem id="menu_stock_inventory_control" name="Inventory Control" parent="menu_stock_root" sequence="4"/> <record id="stock_inventory_line_tree" model="ir.ui.view"> @@ -93,6 +93,7 @@ <page string="General Informations"> <field colspan="4" name="inventory_line_id" nolabel="1" widget="one2many_list"> <tree string="Products" editable="bottom"> + <field colspan="4" domain="[('usage','=','internal')]" name="location_id"/> <field context="location=location_id,uom=product_uom" name="product_id" on_change="on_change_product_id(location_id,product_id,product_uom)" domain="[('type','<>','service')]"/> <field name="product_qty"/> <field name="product_uom"/> @@ -100,21 +101,20 @@ <button name="%(stock.action_view_stock_inventory_line_split)d" string="Split inventory lines" groups="base.group_extended" type="action" icon="terp-stock_effects-object-colorize" states="draft"/> - <field colspan="4" domain="[('usage','=','internal')]" name="location_id"/> <field name="state" invisible="True"/> </tree> <form string="Products "> + <field domain="[('usage','=','internal')]" name="location_id"/> + <newline/> <field colspan="4" context="location=location_id,uom=product_uom" name="product_id" on_change="on_change_product_id(location_id,product_id,product_uom)" domain="[('type','<>','service')]"/> <field name="product_qty"/> <field name="product_uom"/> - <field domain="[('usage','=','internal')]" name="location_id"/> <group colspan="2" col="4"> <field name="prod_lot_id" groups="base.group_extended"/> <button name="%(stock.action_view_stock_inventory_line_split)d" string="Split inventory lines" groups="base.group_extended" type="action" icon="terp-stock_effects-object-colorize"/> </group> - </form> </field> </page><page string="Posted Inventory" groups="base.group_extended"> @@ -151,6 +151,7 @@ <field name="view_id" ref="view_inventory_tree"/> <field name="context">{'full':'1'}</field> <field name="search_view_id" ref="view_inventory_filter" /> + <field name="help">The Periodical Inventories are used when you count your number of products available per location. You can use it, once a year, when you do the general inventory or, once you need it, to correct the current stock level of a product.</field> </record> <menuitem action="action_inventory_form" id="menu_action_inventory_form" parent="menu_stock_inventory_control" sequence="30"/> @@ -209,6 +210,7 @@ <field name="res_model">stock.tracking</field> <field name="view_type">form</field> <field name="view_id" ref="view_tracking_tree"/> + <field name="help">This is the list of all your packs. After having selected a Pack, you can get the up-stream or down-stream traceability of the products contained in the pack.</field> </record> <menuitem id="menu_traceability" name="Traceability" parent="menu_stock_root" sequence="3"/> <menuitem action="action_tracking_form" id="menu_action_tracking_form" @@ -368,6 +370,7 @@ <field name="view_id" ref="view_production_lot_tree"/> <field name="search_view_id" ref="search_product_lot_filter" /> <field name="context">{'full':'1',"search_default_available":1}</field> + <field name="help">This is the list of all the production lots (serial numbers) you recorded. After having selected a lot, you can get the up-stream or down-stream traceability of the products contained in lot.</field> </record> <menuitem action="action_production_lot_form" id="menu_action_production_lot_form" parent="menu_traceability" groups="group_stock_user,group_stock_manager,base.group_extended"/> @@ -507,8 +510,9 @@ <field name="view_id" ref="view_location_tree2"/> <field name="search_view_id" ref="view_location_search"/> <field name="context">{'full':1, 'search_default_in_location':1}</field> + <field name="help">Define your locations in order to reflect to your warehouse structure and organization. OpenERP is able to manage physical locations (warehouses, shelves, bin, etc), partners location (customers, suppliers) and virtual locations which are the counter-part of the stock operations like the manufacturing orders consummations, the inventories, etc. Every stock operation in OpenERP moves the products from one location to another one. For instance, if you receive products from a supplier, OpenERP will move products from the Supplier location into the Stock location. Each report can be performed on physicals, partners or virtual locations.</field> </record> - <menuitem action="action_location_form" id="menu_action_location_form" parent="menu_warehouse_config" groups="base.group_system,group_stock_manager"/> + <menuitem action="action_location_form" id="menu_action_location_form" parent="menu_warehouse_config" groups="group_stock_manager"/> <record id="view_location_tree" model="ir.ui.view"> <field name="name">stock.location.tree</field> @@ -528,6 +532,7 @@ <field name="domain">[('location_id','=',False)]</field> <field name="view_type">tree</field> <field name="view_id" ref="view_location_tree"/> + <field name="help">This is the structure of your company's warehouses and locations. You can click on a location in order to get the list of the products and their stock level in this particular location and all its children.</field> </record> <menuitem action="action_location_tree" id="menu_action_location_tree" parent="menu_stock_inventory_control" groups="base.group_extended,group_stock_manager" sequence="20"/> @@ -567,8 +572,9 @@ <field name="type">ir.actions.act_window</field> <field name="view_type">form</field> <field name="view_id" ref="view_warehouse_tree"/> + <field name="help">Create and manage your warehouses and assign them a location from here</field> </record> - <menuitem action="action_warehouse_form" id="menu_action_warehouse_form" parent="menu_warehouse_config" groups="group_stock_manager,base.group_system"/> + <menuitem action="action_warehouse_form" id="menu_action_warehouse_form" parent="menu_warehouse_config" groups="group_stock_manager"/> <record model="ir.ui.view" id="stock_picking_calendar"> <field name="name">stock.picking.calendar</field> @@ -982,6 +988,7 @@ <field name="domain">[('type','=','out')]</field> <field name="context">{'contact_display': 'partner_address', 'search_default_available': 1}</field> <field name="search_view_id" ref="view_picking_out_search"/> + <field name="help">This is the list of all delivery orders that must be prepared, according to your different sales orders and your logistics rules.</field> </record> <record id="action_picking_tree_out_view1_waiting" model="ir.actions.act_window.view"> <field eval="1" name="sequence"/> @@ -1200,6 +1207,7 @@ <field name="domain">[('type','=','in')]</field> <field name="context">{'contact_display': 'partner_address',"search_default_available":1}</field> <field name="search_view_id" ref="view_picking_in_search"/> + <field name="help">The Incoming Shipments is the list of all orders you will receive from your supplier. An incoming shipment contains a list of products to be received according to the original purchase order. You can validate the shipment totally or partially.</field> </record> <record id="action_invoice_tree5_view1" model="ir.actions.act_window.view"> <field eval="1" name="sequence"/> @@ -1259,6 +1267,7 @@ <field name="domain">[('type','=','internal')]</field> <field name="context">{'contact_display': 'partner_address',"search_default_available":1}</field> <field name="search_view_id" ref="view_picking_internal_search"/> + <field name="help">The Internal Moves lists all inventory operations you have to perform in your warehouse. All operations can be categorized into stock journals, so that each worker has it's own list of operations to perform in his own journal. Most operations are prepared automatically by OpenERP according to your pre-configured logistics rules but you can also record manual stock operations.</field> </record> <record model="ir.actions.act_window.view" id="action_picking_tree6_tree_view"> @@ -1332,35 +1341,38 @@ <field eval="4" name="priority"/> <field name="arch" type="xml"> <form string="Stock Moves"> - <group colspan="2" col="4"> - <separator colspan="4" string="Move Information"/> - <field name="name" colspan="4"/> - <field name="product_id" on_change="onchange_product_id(product_id,location_id,location_dest_id, parent.address_id)" colspan="4"/> - <field name="product_qty" on_change="onchange_quantity(product_id, product_qty, product_uom, product_uos)" colspan="3"/> + <group colspan="4" col="7"> + <field name="product_id" on_change="onchange_product_id(product_id,location_id,location_dest_id, False)"/> + <field name="product_qty" on_change="onchange_quantity(product_id, product_qty, product_uom, product_uos)"/> + <field name="product_uom" string="Unit Of Measure" widget="selection"/> <button name="%(stock.move_scrap)d" groups="base.group_extended" string="Scrap" type="action" icon="gtk-convert" context="{'scrap': True}" states="draft,waiting,confirmed,assigned" colspan="1"/> - <field name="product_uom" string="Unit Of Measure" widget="selection" colspan="4"/> + <newline/> + <field name="location_id" context="{'full':True}"/> + <field name="location_dest_id" context="{'full':True}"/> + <field name="address_id" context="{'contact_display':'partner'}"/> + + </group> + <group colspan="2" col="2"> + <separator colspan="2" string="Move Information"/> + <field name="name" string="Reason"/> <field name="product_uos_qty" groups="product.product_uos" colspan="4"/> <field name="product_uos" groups="product.product_uos" colspan="4"/> </group> <group colspan="2" col="2"> - <separator string="Locations & Picking" colspan="2" /> - <field name="location_id" widget="selection"/> - <field name="location_dest_id" widget="selection"/> + <separator string="Picking" colspan="2" /> <field name="picking_id"/> - <field name="address_id" context="{'contact_display':'partner'}"/> <field name="company_id" groups="base.group_multi_company" widget="selection"/> </group> <group colspan="2" col="2"> - <separator string="Dates & Priority" colspan="2" /> - <field name="create_date"/> - <field name="date"/> + <separator string="Dates" colspan="2" /> + <field name="create_date" groups="base.group_extended"/> + <field name="date" groups="base.group_extended"/> <field name="date_expected"/> - <field name="priority"/> </group> <group colspan="2" col="4" groups="base.group_extended"> @@ -1383,10 +1395,10 @@ <separator colspan="4"/> <field name="state"/> <group col="4" colspan="2"> - <button name="action_confirm" states="draft" string="Confirm" type="object" icon="gtk-apply"/> - <button name="action_assign" states="confirmed" string="Set Available" type="object" icon="gtk-yes"/> + <button name="action_confirm" states="draft" string="Process Later" type="object" icon="gtk-apply"/> + <button name="force_assign" states="confirmed" string="Set Available" type="object" icon="gtk-yes"/> <button name="action_cancel" states="assigned,confirmed" string="_Cancel" type="object" icon="gtk-cancel"/> - <button name="action_done" states="assigned" string="Process" type="object" icon="gtk-jump-to"/> + <button name="action_done" states="draft,assigned,confirmed" string="Process Now" type="object" icon="gtk-jump-to"/> </group> </form> </field> @@ -1446,6 +1458,7 @@ <field name="view_id" ref="view_move_tree"/> <field name="search_view_id" ref="view_move_search"/> <field name="context">{'search_default_Available':1}</field> + <field name="help">This menu gives you the full traceability of inventory operations made on a specific product. You can filter on the product to see all the past or future movements made on the product.</field> </record> <menuitem action="action_move_form2" id="menu_action_move_form2" parent="menu_traceability" sequence="1"/> @@ -1519,36 +1532,39 @@ <field name="type">form</field> <field eval="6" name="priority"/> <field name="arch" type="xml"> - <form string="Moves"> - <group colspan="2" col="4"> - <separator colspan="4" string="Move Information"/> - <field name="name" colspan="4"/> - <field name="product_id" on_change="onchange_product_id(product_id, location_id, location_dest_id, address_id)" colspan="4"/> - <field name="product_qty" on_change="onchange_quantity(product_id, product_qty, product_uom, product_uos)" colspan="3"/> + <form string="Receive Products"> + <group colspan="4" col="7"> + <field name="product_id" on_change="onchange_product_id(product_id,location_id,location_dest_id, False)"/> + <field name="product_qty" on_change="onchange_quantity(product_id, product_qty, product_uom, product_uos)"/> + <field name="product_uom" string="Unit Of Measure" widget="selection"/> <button name="%(stock.move_scrap)d" groups="base.group_extended" string="Scrap" type="action" icon="gtk-convert" context="{'scrap': True}" states="draft,waiting,confirmed,assigned" colspan="1"/> - <field name="product_uom" widget="selection" colspan="4"/> + <newline/> + <field name="location_id" context="{'full':True}"/> + <field name="location_dest_id" context="{'full':True}"/> + <field name="address_id" context="{'contact_display':'partner'}"/> + + </group> + <group colspan="2" col="2"> + <separator colspan="2" string="Move Information"/> + <field name="name" string="Reason"/> <field name="product_uos_qty" groups="product.product_uos" colspan="4"/> - <field name="product_uos" widget="selection" groups="product.product_uos" colspan="4"/> + <field name="product_uos" groups="product.product_uos" colspan="4"/> </group> <group colspan="2" col="2"> - <separator string="Locations & Picking" colspan="2" /> - <field name="location_id" widget="selection"/> - <field name="location_dest_id" widget="selection"/> + <separator string="Picking" colspan="2" /> <field name="picking_id"/> - <field name="address_id" context="{'contact_display':'partner'}"/> <field name="company_id" groups="base.group_multi_company" widget="selection"/> </group> <group colspan="2" col="2"> - <separator string="Dates & Priority" colspan="2" /> - <field name="create_date"/> - <field name="date"/> + <separator string="Dates" colspan="2" /> + <field name="create_date" groups="base.group_extended"/> + <field name="date" groups="base.group_extended"/> <field name="date_expected"/> - <field name="priority"/> </group> <group colspan="2" col="4" groups="base.group_extended"> @@ -1557,7 +1573,7 @@ <button name="%(split_into)d" string="New pack" type="action" groups="base.group_extended" icon="terp-stock_effects-object-colorize" - states="draft,assigned,confirmed,done"/> + states="draft,assigned,confirmed,done" colspan="1"/> <field name="prodlot_id" groups="base.group_extended" context="{'location_id':location_id, 'product_id':product_id}" domain="[('product_id','=?',product_id)]" @@ -1565,16 +1581,17 @@ <button name="%(track_line)d" groups="base.group_extended" states="draft,waiting,confirmed,assigned,done" - string="Split" type="action" icon="terp-stock_effects-object-colorize" colspan="1" /> + string="Split" type="action" icon="terp-stock_effects-object-colorize" colspan="1"/> </group> + <separator colspan="4"/> <field name="state"/> <group col="5" colspan="2"> - <button name="action_confirm" states="draft" string="Confirm" type="object" icon="gtk-apply"/> - <button name="action_assign" states="confirmed" string="Set Available" type="object" icon="gtk-yes"/> <button name="action_cancel" states="assigned,confirmed" string="_Cancel" type="object" icon="gtk-cancel"/> - <button name="%(action_partial_move)d" states="assigned,confirmed" string="Partial" type="action" icon="gtk-justify-fill"/> - <button name="action_done" states="assigned" string="Process" type="object" icon="gtk-go-forward"/> + <button name="action_confirm" states="draft" string="Process Later" type="object" icon="gtk-apply"/> + <button name="force_assign" states="confirmed" string="Set Available" type="object" icon="gtk-yes"/> + <button name="%(action_partial_move)d" states="assigned" string="Partial" type="action" icon="gtk-justify-fill"/> + <button name="action_done" states="draft,assigned,confirmed" string="Process Now" type="object" icon="gtk-jump-to"/> </group> </form> </field> @@ -1652,15 +1669,16 @@ </record> <record id="action_reception_picking_move" model="ir.actions.act_window"> - <field name="name">Incoming Products</field> + <field name="name">Receive Products</field> <field name="res_model">stock.move</field> <field name="type">ir.actions.act_window</field> <field name="view_type">form</field> <field name="view_mode">tree,form</field> <field name="domain">['|','&',('picking_id','=',False),('location_id.usage', 'in', ['customer','supplier']),'&',('picking_id','!=',False),('picking_id.type','=','in')]</field> <field name="view_id" ref="view_move_tree_reception_picking"/> - <field name="context">{"search_default_receive":1}</field> + <field name="context" eval="'{\'search_default_receive\':1, \'default_location_id\':%d, \'default_location_dest_id\':%d}' % (ref('stock_location_suppliers'),ref('stock_location_stock'))"/> <field name="search_view_id" ref="view_move_search_reception_incoming_picking"/> + <field name="help">You will find here the list of all products you are waiting for, according to your preceding purchase orders. Once you receive an order, you can filter based on the name of the supplier or the purchase order reference. Then you can confirm all products received using the buttons on the right of each line.</field> </record> <record model="ir.actions.act_window.view" id="action_move_reception_picking_tree"> @@ -1786,15 +1804,16 @@ </record> <record id="action_out_picking_move" model="ir.actions.act_window"> - <field name="name">Outgoing Products</field> + <field name="name">Deliver Products</field> <field name="res_model">stock.move</field> <field name="type">ir.actions.act_window</field> <field name="view_type">form</field> <field name="view_mode">tree,form</field> <field name="domain">['|','&',('picking_id','=',False),('location_dest_id.usage', 'in', ['customer','supplier']),'&',('picking_id','!=',False),('picking_id.type','=','out')]</field> <field name="view_id" ref="view_move_tree_reception_picking"/> - <field name="context">{"search_default_receive":1}</field> + <field name="context" eval="'{\'search_default_receive\':1, \'default_location_id\':%d, \'default_location_dest_id\':%d}' % (ref('stock_location_stock'),ref('stock_location_customers'))"/> <field name="search_view_id" ref="view_move_search_reception_outcoming_picking"/> + <field name="help">The 'Deliver Products' menu lists all products you have to deliver to your customers. You can process the deliveries directly from this list, line by or line or through the Delivery Orders menu.</field> </record> <record model="ir.actions.act_window.view" id="action_move_out_picking_tree"> @@ -1806,7 +1825,7 @@ <record model="ir.actions.act_window.view" id="action_move_out_picking_form"> <field name="sequence" eval="2"/> <field name="view_mode">form</field> - <field name="view_id" ref="view_move_form_reception_picking"/> + <field name="view_id" ref="view_move_form"/> <field name="act_window_id" ref="action_out_picking_move"/> </record> @@ -1852,6 +1871,7 @@ <field name="res_model">stock.journal</field> <field name="type">ir.actions.act_window</field> <field name="view_type">form</field> + <field name="help">The stock journals system allows you assign each stock operation into a specific journal according to the type of operation to perform or the worker/team that should perform the operation. Examples of stock journals may be: quality control, pick lists, packing, etc.</field> </record> <menuitem action="action_stock_journal_form" diff --git a/addons/stock/wizard/stock_partial_picking.py b/addons/stock/wizard/stock_partial_picking.py index 1b746f230b5fc0bf9cbb7d42346b7bd195fb7e75..6f84e5ec12c3ab268db9dffcb9086b7dffaf3ef4 100644 --- a/addons/stock/wizard/stock_partial_picking.py +++ b/addons/stock/wizard/stock_partial_picking.py @@ -60,13 +60,10 @@ class stock_partial_picking(osv.osv_memory): result = super(stock_partial_picking, self).fields_view_get(cr, uid, view_id, view_type, context, toolbar,submenu) pick_obj = self.pool.get('stock.picking') picking_ids = context.get('active_ids', False) - _moves_arch_lst = """<form string="Deliver Products"> - <separator colspan="4" string="Delivery Information"/> - <group colspan="4" col="4"> - <field name="date"/> - </group> - <separator colspan="4" string="Move Detail"/> - """ + _moves_arch_lst = """<form string="%s"> + <field name="date" invisible="1"/> + <separator colspan="4" string="%s"/> + """ % (_('Process Document'), _('Products')) _moves_fields = result['fields'] if picking_ids and view_type in ['form']: for pick in pick_obj.browse(cr, uid, picking_ids, context): @@ -101,13 +98,20 @@ class stock_partial_picking(osv.osv_memory): } }) + invisible = "1" + if pick.type=='in' and m.product_id.track_incoming: + invisible="" + if pick.type=='out' and m.product_id.track_outgoing: + invisible="" + + _moves_arch_lst += """ <group colspan="4" col="10"> <field name="move%s_product_id" nolabel="1"/> - <field name="move%s_product_qty" string="Qty" /> + <field name="move%s_product_qty"/> <field name="move%s_product_uom" nolabel="1" /> - <field name="move%s_prodlot_id" domain="[('product_id','=',move%s_product_id)]" groups="base.group_extended" /> - """%(m.id, m.id, m.id, m.id,m.id) + <field name="move%s_prodlot_id" domain="[('product_id','=',move%s_product_id)]" invisible="%s" /> + """%(m.id, m.id, m.id, m.id,m.id, invisible) if (need_product_cost and m.product_id.cost_method == 'average'): _moves_fields.update({ diff --git a/addons/stock_invoice_directly/test/stock_invoice_directly.yml b/addons/stock_invoice_directly/test/stock_invoice_directly.yml index 6a7e99276b9a155d89e4748f411221016c194dc3..4a0708b84d97c3319aa8649d440dce2f7fa3d175 100644 --- a/addons/stock_invoice_directly/test/stock_invoice_directly.yml +++ b/addons/stock_invoice_directly/test/stock_invoice_directly.yml @@ -65,7 +65,6 @@ !record {model: stock.invoice.onshipping, id: stock_invoice_onshipping_0}: invoice_date: '2010-08-04' journal_id: account.bank_journal - type: out_invoice - I create a Customer invoice for my outgoing picking order. - @@ -82,4 +81,4 @@ partner = picking[0].address_id.partner_id.id inv_ids = self.search(cr, uid, [('type','=','out_invoice'),('partner_id','=',partner)]) assert inv_ids, 'No Invoice is generated!' - \ No newline at end of file + diff --git a/addons/stock_no_autopicking/i18n/it.po b/addons/stock_no_autopicking/i18n/it.po index bc0cc16eef2846fbae9612eeb1da84c941532ed7..96669fda8c6cd983413fbeca2d297505ac9c55ea 100644 --- a/addons/stock_no_autopicking/i18n/it.po +++ b/addons/stock_no_autopicking/i18n/it.po @@ -7,13 +7,13 @@ msgstr "" "Project-Id-Version: OpenERP Server 5.0.4\n" "Report-Msgid-Bugs-To: support@openerp.com\n" "POT-Creation-Date: 2009-08-28 16:01+0000\n" -"PO-Revision-Date: 2009-02-03 09:22+0000\n" -"Last-Translator: Fabien (Open ERP) <fp@tinyerp.com>\n" +"PO-Revision-Date: 2010-10-16 08:12+0000\n" +"Last-Translator: simone.sandri <Unknown>\n" "Language-Team: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2010-09-29 05:13+0000\n" +"X-Launchpad-Export-Date: 2010-10-17 04:53+0000\n" "X-Generator: Launchpad (build Unknown)\n" #. module: stock_no_autopicking @@ -24,7 +24,7 @@ msgstr "XML non valido per Visualizzazione Architettura!" #. module: stock_no_autopicking #: field:product.product,auto_pick:0 msgid "Auto Picking" -msgstr "" +msgstr "Scelta Automatica" #. module: stock_no_autopicking #: help:product.product,auto_pick:0 diff --git a/addons/stock_planning/security/ir.model.access.csv b/addons/stock_planning/security/ir.model.access.csv index d4d543e25c444da86afd7ce34573e97dc9dcf5b4..d83c6d2f4d8f4c41a12bcdf96a67e99fd613e57e 100644 --- a/addons/stock_planning/security/ir.model.access.csv +++ b/addons/stock_planning/security/ir.model.access.csv @@ -1,8 +1,5 @@ "id","name","model_id:id","group_id:id","perm_read","perm_write","perm_create","perm_unlink" -"access_stock_planning_system","stock.planning system","model_stock_planning","base.group_system",1,0,0,0 "access_stock_planning_manager","stock.planning manager","model_stock_planning","stock.group_stock_manager",1,0,0,0 "access_stock_planning_user","stock.planning user","model_stock_planning","stock.group_stock_user",1,1,1,1 -"access_stock_period_","stock.period","model_stock_period","base.group_system",1,1,1,1 "access_stock_sale_forecast_user","stock.sale.forecast user","model_stock_sale_forecast","base.group_sale_salesman",1,1,1,1 "access_stock_sale_forecast_manager","stock.sale.forecast manager","model_stock_sale_forecast","base.group_sale_manager",1,0,0,0 -"access_stock_sale_forecast_system","stock.sale.forecast system","model_stock_sale_forecast","base.group_system",1,0,0,0 diff --git a/addons/stock_planning/stock_planning_view.xml b/addons/stock_planning/stock_planning_view.xml index 704703cb13adb0f2c33fc390d70120a6708952d9..8d8c3cd37906c1d71be8a4ce794271e9f85cb9cc 100644 --- a/addons/stock_planning/stock_planning_view.xml +++ b/addons/stock_planning/stock_planning_view.xml @@ -3,7 +3,7 @@ <data> <menuitem id="menu_stock_period_main" name="Stock and Sales Periods" - parent="base.menu_base_config" groups="base.group_system" sequence="20"/> + parent="base.menu_base_config" sequence="20"/> <!-- Periods tree and form section --> @@ -182,7 +182,7 @@ <!-- Forecast section --> <menuitem id="menu_stock_sale_forecast" name="Sales Forecasts" - parent="base.menu_base_partner" sequence="6" groups="base.group_extended,base.group_system"/> + parent="base.menu_base_partner" sequence="6" groups="base.group_extended"/> <record id="view_stock_sale_forecast_filter" model="ir.ui.view"> <field name="name">stock.sale.forecast.list.select</field> diff --git a/addons/survey/report/survey_browse_response.py b/addons/survey/report/survey_browse_response.py index 2cdb98622a91629b624eb3d798690e12388f939a..a2ee95e417eb03fa48e5ff31041053ad9a0a2af9 100644 --- a/addons/survey/report/survey_browse_response.py +++ b/addons/survey/report/survey_browse_response.py @@ -204,6 +204,7 @@ class survey_browse_response(report_rml): rml += """<blockTable colWidths='""" + colwidth + """' style="Table_heading"> <tr> <td><para style="terp_tblheader_General_Centre">Answer Create Date:- </para></td> + # *-* formatting hard coded, breaks with utf8 <td><para style="terp_tblheader_General_Centre_simple">""" + to_xml(time.strftime('%d-%m-%Y %I:%M:%S %p', time.strptime(response.date_create.split('.')[0], '%Y-%m-%d %H:%M:%S'))) + """</para></td> <td><para style="terp_tblheader_General_Centre"></para></td> <td><para style="terp_tblheader_General_right">Answer By:- </para></td> diff --git a/addons/wiki/web/widgets/wikimarkup/__init__.py b/addons/wiki/web/widgets/wikimarkup/__init__.py index 91fec4bc4fdcbaf4ac5b540ca0e897db89c76b76..5eceea0e86d62e94b671dd1586fb9557bacd75eb 100644 --- a/addons/wiki/web/widgets/wikimarkup/__init__.py +++ b/addons/wiki/web/widgets/wikimarkup/__init__.py @@ -455,7 +455,6 @@ class BaseParser(object): if hasattr(self, 'count'): data = self.env[namespace] test = key in data - ls self.count = True return key in self.env[namespace] @@ -1114,7 +1113,7 @@ class BaseParser(object): trail = url[i:] + trail url = url[0:i] - url = cleanURL(url) + url = self.cleanURL(url) sb.append(u'<a href="') sb.append(url) @@ -1978,7 +1977,9 @@ class Parser(BaseParser): if toclevel < wgMaxTocLevel: toc.append(u"</li>\n") toc.append(u"</ul>\n</li>\n" * max(0, toclevel - 1)) - toc.insert(0, u'<div id="toc"><h2>' + _('Table of Contents') + '</h2>') + #TODO: use gettext + #toc.insert(0, u'<div id="toc"><h2>' + _('Table of Contents') + '</h2>') + toc.insert(0, u'<div id="toc"><h2>Table of Contents</h2>') toc.append(u'</ul>\n</div>') # split up and insert constructed headlines diff --git a/addons/wiki/wiki_view.xml b/addons/wiki/wiki_view.xml index 9730031f630005861bb837687eafe598d56af28c..8afd0435a41229bf45d9990de8668f839ec69925 100644 --- a/addons/wiki/wiki_view.xml +++ b/addons/wiki/wiki_view.xml @@ -6,7 +6,7 @@ <menuitem name="Configuration" id="knowledge.menu_document_configuration" - parent="knowledge.menu_document" sequence="50" groups="base.group_system" /> + parent="knowledge.menu_document" sequence="50"/> <menuitem name="Wiki" id="menu_wiki_configuration" parent="knowledge.menu_document_configuration" sequence="2" />