diff --git a/addons/account/__openerp__.py b/addons/account/__openerp__.py index ac17ec4d170..823bb56a7a9 100644 --- a/addons/account/__openerp__.py +++ b/addons/account/__openerp__.py @@ -32,7 +32,7 @@ Customer and Supplier Invoices Bank statements Reconciliation process by partner - Creates a dashboards for accountants that includes: + Creates a dashboard for accountants that includes: * List of uninvoiced quotations * Graph of aged receivables * Graph of aged incomes diff --git a/addons/account/account_bank_statement.py b/addons/account/account_bank_statement.py index 6b8f07d0e52..647d80e61be 100644 --- a/addons/account/account_bank_statement.py +++ b/addons/account/account_bank_statement.py @@ -412,7 +412,7 @@ class account_bank_statement(osv.osv): if t['state'] in ('draft'): unlink_ids.append(t['id']) else: - raise osv.except_osv(_('Invalid action !'), _('Cannot delete bank statement which are already confirmed !')) + raise osv.except_osv(_('Invalid action !'), _('Cannot delete bank statement(s) which are already confirmed !')) osv.osv.unlink(self, cr, uid, unlink_ids, context=context) return True diff --git a/addons/account/account_installer.xml b/addons/account/account_installer.xml index a9de51c3afb..a3570fae79a 100644 --- a/addons/account/account_installer.xml +++ b/addons/account/account_installer.xml @@ -73,7 +73,7 @@ - Add extra Accounting Addons to the ones already installed. Remember you can always install them at a later stage. + Add extra Accounting functionalities to the ones already installed. Configure diff --git a/addons/account/partner_view.xml b/addons/account/partner_view.xml index d53fb9fe80a..ca489acd9bd 100644 --- a/addons/account/partner_view.xml +++ b/addons/account/partner_view.xml @@ -72,7 +72,7 @@ 2 - + diff --git a/addons/account/project/report/analytic_balance.py b/addons/account/project/report/analytic_balance.py index 3df4fd9584b..8050b62753f 100644 --- a/addons/account/project/report/analytic_balance.py +++ b/addons/account/project/report/analytic_balance.py @@ -19,7 +19,6 @@ # ############################################################################## -import pooler import time from report import report_sxw @@ -43,7 +42,6 @@ class account_analytic_balance(report_sxw.rml_parse): self.acc_sum_list = []# maintains a list of all ids def get_children(self, ids): - ids2 = [] read_data = self.pool.get('account.analytic.account').read(self.cr, self.uid, ids,['child_ids','code','complete_name','balance']) for data in read_data: if (data['id'] not in self.acc_ids): @@ -54,7 +52,7 @@ class account_analytic_balance(report_sxw.rml_parse): self.acc_ids.append(data['id']) self.read_data.append(data) if data['child_ids']: - res = self.get_children(data['child_ids']) + self.get_children(data['child_ids']) return True diff --git a/addons/account/test/account_change_currency.yml b/addons/account/test/account_change_currency.yml index 4fe89534ce5..479afd2f2e2 100644 --- a/addons/account/test/account_change_currency.yml +++ b/addons/account/test/account_change_currency.yml @@ -50,7 +50,7 @@ !assert {model: account.invoice, id: account_invoice_currency}: - state == 'proforma2' - - I can't change the currency of invoice when it is not in draft state so i change the state to cancel + I can't change the currency of invoice when it is not in draft state so I change the state to cancel - !workflow {model: account.invoice, action: invoice_cancel, ref: account_invoice_currency} - diff --git a/addons/account/test/account_report.yml b/addons/account/test/account_report.yml index bd9af0f2a34..7e4295da45b 100644 --- a/addons/account/test/account_report.yml +++ b/addons/account/test/account_report.yml @@ -1,5 +1,5 @@ - - In order to test the PDF reports defined on an invoice, we will print an invoice + In order to test the PDF reports defined on an invoice, we will print an Invoice Report - !python {model: account.invoice}: | import netsvc, tools, os diff --git a/addons/account/test/account_sequence_test.yml b/addons/account/test/account_sequence_test.yml index 3be824d2ca0..4748175c118 100644 --- a/addons/account/test/account_sequence_test.yml +++ b/addons/account/test/account_sequence_test.yml @@ -32,7 +32,7 @@ reference_type: none period_id: period_1 -- I create the invoice, as is I clicked on the "Create" button +- I create the invoice, as I clicked on the "Create" button - !workflow {model: account.invoice, action: invoice_open, ref: invoice_seq_test} - I check that the invoice state is "Open" diff --git a/addons/account/test/test_parent_structure.yml b/addons/account/test/test_parent_structure.yml index aed40e6f0f3..3c4db5c3ff4 100644 --- a/addons/account/test/test_parent_structure.yml +++ b/addons/account/test/test_parent_structure.yml @@ -1,5 +1,5 @@ - - We retrieve all accounts and test they are in a tree data structure. + We retrieve all accounts and test that those are in a tree data structure. - !python {model: account.account}: | ids = self.search(cr, uid, []) diff --git a/addons/account_analytic_plans/test/acount_analytic_plans_report.yml b/addons/account_analytic_plans/test/acount_analytic_plans_report.yml index debeba7daa0..0990b9ba5f9 100644 --- a/addons/account_analytic_plans/test/acount_analytic_plans_report.yml +++ b/addons/account_analytic_plans/test/acount_analytic_plans_report.yml @@ -1,5 +1,5 @@ - - Print the Cross Overed Report in Normal mode + Print the Crossovered Analytic Report in Normal mode - !python {model: account.analytic.account}: | import netsvc, tools, os, time diff --git a/addons/account_budget/__openerp__.py b/addons/account_budget/__openerp__.py index 5d6d8da0def..4fd24da70e9 100644 --- a/addons/account_budget/__openerp__.py +++ b/addons/account_budget/__openerp__.py @@ -26,7 +26,7 @@ 'category': 'Generic Modules/Accounting', 'description': """This module allows accountants to manage analytic and crossovered budgets. -Once the Master Budgets and the Budgets defined (in Financial +Once the Master Budgets and the Budgets are defined (in Financial Management/Budgets/), the Project Managers can set the planned amount on each Analytic Account. diff --git a/addons/account_budget/test/account_budget.yml b/addons/account_budget/test/account_budget.yml index f77efa23b15..4a2d5023fc7 100644 --- a/addons/account_budget/test/account_budget.yml +++ b/addons/account_budget/test/account_budget.yml @@ -1,5 +1,5 @@ - - In order to check account budget module in OpenERP I created a budget with few budget position + In order to check account budget module in OpenERP I created a budget with few budget positions - Creating a crossovered.budget record - @@ -58,7 +58,7 @@ - state == 'validate' - - I pressed the done button to done the Budget + I pressed the done button to set the Budget to "Done" state - Performing a workflow action done on module crossovered.budget - diff --git a/addons/account_budget/test/account_budget_report.yml b/addons/account_budget/test/account_budget_report.yml index fa086e24a64..2115341c1a1 100644 --- a/addons/account_budget/test/account_budget_report.yml +++ b/addons/account_budget/test/account_budget_report.yml @@ -17,7 +17,7 @@ if tools.config['test_report_directory']: file(os.path.join(tools.config['test_report_directory'], 'account_budget-budget_report.'+format), 'wb+').write(data) - - Print the Cross Overed Budget Report in Normal mode + Print the CrossOvered Budget Report in Normal mode - !python {model: crossovered.budget}: | import netsvc, tools, os, time diff --git a/addons/account_budget/test/account_budget_spread.yml b/addons/account_budget/test/account_budget_spread.yml index 98d85222859..c996c647025 100644 --- a/addons/account_budget/test/account_budget_spread.yml +++ b/addons/account_budget/test/account_budget_spread.yml @@ -1,5 +1,5 @@ - - In order to test Spread Wizard of account module I spread record with amount=1000 + In order to test Spread Wizard of account_budget module I spread record with amount=1000 - Creating a account.budget.spread record - @@ -9,7 +9,7 @@ - - Performing an osv_memory action check_spread on module account.budget.spread + Performing an osv_memory action check_spread on model account.budget.spread - !python {model: account.budget.spread}: | self.check_spread(cr, uid, [ref("account_budget_spread_0")], {"lang": 'en_US', diff --git a/addons/account_followup/__openerp__.py b/addons/account_followup/__openerp__.py index ea2f79c967d..ae6fb8e4fce 100644 --- a/addons/account_followup/__openerp__.py +++ b/addons/account_followup/__openerp__.py @@ -27,18 +27,18 @@ Modules to automate letters for unpaid invoices, with multi-level recalls. You can define your multiple levels of recall through the menu: - Financial Management/Configuration/Follow-Ups + Accounting/Configuration/Miscellaneous/Follow-Ups - Once it's defined, you can automatically print recalls every day + Once it is defined, you can automatically print recalls every day through simply clicking on the menu: - Financial Management/Periodical Processing/Send followups + Accounting/Periodical Processing/Billing/Send followups - It will generate a PDF with all the letters according the the + It will generate a PDF with all the letters according to the the different levels of recall defined. You can define different policies - for different companies. You can send also mail to the customer. + for different companies. You can also send mail to the customer. - Note that if you want to change the followup level for a given partner/account entry, you can do it in the menu: - Accounting/Reporting/Follow-Ups/All receivable entries + Note that if you want to change the followup level for a given partner/account entry, you can do from in the menu: + Accounting/Reporting/Generic Reporting/Partner Accounts/Follow-ups Sent """, 'author': 'OpenERP SA', diff --git a/addons/account_followup/test/account_followup.yml b/addons/account_followup/test/account_followup.yml index 0a47ddad116..a81559011f3 100644 --- a/addons/account_followup/test/account_followup.yml +++ b/addons/account_followup/test/account_followup.yml @@ -101,11 +101,3 @@ "active_model": "ir.ui.menu", "active_ids": [ref("account_followup.account_followup_print_menu")], "tz": False, "date": "2010-06-08", "followup_id": ref("account_followup_followup_testfollowups0"), "active_id": ref("account_followup.account_followup_print_menu"), }) - - - - - - - - diff --git a/addons/account_invoice_layout/report/report_account_invoice_layout.rml b/addons/account_invoice_layout/report/report_account_invoice_layout.rml index 0e17cfeef68..f92cd477f1a 100644 --- a/addons/account_invoice_layout/report/report_account_invoice_layout.rml +++ b/addons/account_invoice_layout/report/report_account_invoice_layout.rml @@ -477,7 +477,7 @@ - [[ format((o.payment_term and o.payment_term.note or '') or removeParentNode('blockTable')) ]] + [[ o.payment_term and o.payment_term.name + " :\n" + format(o.payment_term.note or '') or removeParentNode('blockTable') ]] diff --git a/addons/account_report/__openerp__.py b/addons/account_report/__openerp__.py index b8029bf3563..57db73ce6ff 100644 --- a/addons/account_report/__openerp__.py +++ b/addons/account_report/__openerp__.py @@ -27,7 +27,7 @@ 'description': """Financial and accounting reporting Fiscal statements Indicators - Add a dashboards for accountant that include Indicators reporting. + Adds a dashboard for accountant that include Indicators reporting. """, 'author': 'OpenERP SA', 'website': 'http://www.openerp.com', diff --git a/addons/account_tax_include/__openerp__.py b/addons/account_tax_include/__openerp__.py index f1e6c3dfb74..a6bab18ce01 100644 --- a/addons/account_tax_include/__openerp__.py +++ b/addons/account_tax_include/__openerp__.py @@ -27,7 +27,7 @@ 'description': """Allow the user to work tax included prices. Especially useful for b2c businesses. -This module implement the modification on the invoice form. +This module implements the modification on the invoice form. """, 'author': 'OpenERP SA', 'website': 'http://www.openerp.com', diff --git a/addons/account_voucher/test/account_voucher.yml b/addons/account_voucher/test/account_voucher.yml index b63bfc9d129..424ec0e5cc7 100644 --- a/addons/account_voucher/test/account_voucher.yml +++ b/addons/account_voucher/test/account_voucher.yml @@ -23,7 +23,7 @@ !assert {model: account.voucher, id: account_voucher_voucherforaxelor0}: - state == 'draft' - - I compute the voucher to calculate the taxes by clicking Cpmpute button + I compute the voucher to calculate the taxes by clicking Compute button - !workflow {model: account.voucher, action: proforma_voucher, ref: account_voucher_voucherforaxelor0} - diff --git a/addons/analytic/analytic.py b/addons/analytic/analytic.py index b97edb9a546..cf96028f01c 100644 --- a/addons/analytic/analytic.py +++ b/addons/analytic/analytic.py @@ -282,6 +282,7 @@ class account_analytic_line(osv.osv): _defaults = { 'date': time.strftime('%Y-%m-%d'), 'company_id': lambda self,cr,uid,c: self.pool.get('res.company')._company_default_get(cr, uid, 'account.analytic.line', context=c), + 'amount' : 0.00 } _order = 'date desc' diff --git a/addons/association/profile_association.py b/addons/association/profile_association.py index f102d710fd8..2b73dd69885 100644 --- a/addons/association/profile_association.py +++ b/addons/association/profile_association.py @@ -20,20 +20,24 @@ ############################################################################## from osv import fields, osv -import pooler class profile_association_config_install_modules_wizard(osv.osv_memory): _name='profile.association.config.install_modules_wizard' _inherit = 'res.config.installer' _columns = { - 'hr_expense':fields.boolean('Expenses Tracking', help="Tracks the personal expenses process, from the employee expense encoding, to the reimbursement of the employee up to the reinvoicing to the final customer."), - 'project':fields.boolean('Project Management'), - 'event_project':fields.boolean('Organization and management of Events', help="This module allows you to create retro planning for managing your events."), + 'hr_expense':fields.boolean('Expenses Tracking', help="Tracks and manages employee expenses, and can " + "automatically re-invoice clients if the expenses are " + "project-related."), + 'project':fields.boolean('Project Management', + help="Helps you manage your projects and tasks by tracking them, " + "generating plannings, etc..."), + 'event_project':fields.boolean('Events', help="Helps you to manage and organize your events."), '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."), - 'wiki': fields.boolean('Wiki', - help="An integrated wiki content management system. This is really usefull to manage FAQ, quality manuals, etc.") + 'wiki': fields.boolean('Wiki', help="Lets you create wiki pages and page groups in order " + "to keep track of business knowledge and share it with " + "and between your employees."), } profile_association_config_install_modules_wizard() # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/addons/auction/auction.py b/addons/auction/auction.py index a1fb726339e..834e7e9b150 100644 --- a/addons/auction/auction.py +++ b/addons/auction/auction.py @@ -646,7 +646,6 @@ class auction_lots(osv.osv): if not context: context={} inv_ref=self.pool.get('account.invoice') - partner_obj = self.pool.get('res.partner') inv_line_obj = self.pool.get('account.invoice.line') wf_service = netsvc.LocalService('workflow') for lot in self.browse(cr, uid, ids, context): @@ -655,7 +654,6 @@ class auction_lots(osv.osv): if lot.bord_vnd_id.id in invoices: inv_id = invoices[lot.bord_vnd_id.id] else: - res = partner_obj.address_get(cr, uid, [lot.bord_vnd_id.partner_id.id], ['contact', 'invoice']) inv = { 'name': 'Auction:' +lot.name, 'journal_id': lot.auction_id.journal_seller_id.id, diff --git a/addons/auction/test/auction.yml b/addons/auction/test/auction.yml index 6d07f5fc0a5..bbab6786e27 100644 --- a/addons/auction/test/auction.yml +++ b/addons/auction/test/auction.yml @@ -25,12 +25,12 @@ name: Vincent van Gogh - - I modifying a expenses journal record for analytic journal. + I am modifying an expenses journal record for analytic journal. - !record {model: account.journal, id: account.expenses_journal}: analytic_journal_id: account.exp - - I modifying a sales journal record for analytic journal. + I am modifying a sales journal record for analytic journal. - !record {model: account.journal, id: account.sales_journal}: analytic_journal_id: account.cose_journal_sale @@ -49,7 +49,7 @@ name: Mr. Pinakin - - I'm creating new Buyer "Mr. Patel" with him email "info@myinfobid.com". + I'm creating new Buyer "Mr. Patel" with his email "info@myinfobid.com". - !record {model: res.partner, id: res_partner_mrpatel0}: address: @@ -62,7 +62,7 @@ name: Mr. Patel - - I'm creating new Buyer "Mr. Johnson" with him email "info@mrkjohnson.com". + I'm creating new Buyer "Mr. Johnson" with his email "info@mrkjohnson.com". - !record {model: res.partner, id: res_partner_mrkjohnson0}: address: @@ -76,7 +76,7 @@ name: Mr. Mark Johnson - - I'm creating new Buyer "Mr. Rahi" with him email "info@poalrahi.com". + I'm creating new Buyer "Mr. Rahi" with his email "info@poalrahi.com". - !record {model: res.partner, id: res_partner_poalrahi0}: address: @@ -90,7 +90,7 @@ - - I create Account tax with 0.03 amount to give Buyer "3%" Commision. + I create an Account tax with 0.03 amount to give Buyer "3%" Commission. - !record {model: account.tax, id: account_tax_buyer0}: amount: 0.029999999999999999 @@ -102,7 +102,7 @@ type: percent type_tax_use: all - - I create Account tax with 0.04 amount to give seller "4%" commision. + I create another Account tax with 0.04 amount to give seller "4%" commission. - !record {model: account.tax, id: account_tax_sellercosts0}: amount: 0.040000000000000001 @@ -116,7 +116,7 @@ - Now I want to associate an object with the auction so for that I create an auction "Antique furniture exhibition" which - start from 1 Aug to 31 Aug with Seller Commition 4%, buyer commition 3%. + start from 1 Aug to 31 Aug with Seller Commission 4%, buyer commission 3%. - !record {model: auction.dates, id: auction_dates_antiquefurnitureexhibition0}: acc_expense: account.a_pay @@ -165,7 +165,7 @@ state: draft vnd_lim: 5000.0 - - I create a bid for an object "wooden-chair" which is to be auctioned in Antique furniture exhibition bided by Mr.Patel. + I create a bid for an object "wooden-chair" which is to be auctioned in Antique furniture exhibition bid by Mr.Patel. - !record {model: auction.bid, id: auction_bid_bid0}: auction_id: auction_dates_antiquefurnitureexhibition0 @@ -182,7 +182,7 @@ price: 3100.0 - - I create another bid for an object "wooden-chair" bided by a Mr.poalrahi + I create another bid for an object "wooden-chair" bid by a Mr.poalrahi - !record {model: auction.bid, id: auction_bid_bid1}: auction_id: auction_dates_antiquefurnitureexhibition0 @@ -199,7 +199,7 @@ price: 3200.0 - - I create another bid for an object "wooden-chair" bided by a Mr.Johnson + I create another bid for an object "wooden-chair" bid by a Mr.Johnson - !record {model: auction.bid, id: auction_bid_bid2}: auction_id: auction_dates_antiquefurnitureexhibition0 @@ -215,9 +215,9 @@ lot_id: auction.auction_lots_woodenchair0 price: 4000.0 - - Mr. MarkJohnson bid are selected as Finallist Bid with 4000 Euro + Mr. MarkJohnson bid are selected as the Finalist Bid with 4000 Euro - - I check that buyer price and seller price gets bind with the value + I check that buyer price and seller price gets bound with the value - !python {model: auction.lots}: | from tools.translate import _ @@ -254,13 +254,13 @@ number: 2010/003 objects: 1 - - Then I click on the "Create Invoices" button. + I click on the "Create Invoices" button. - !python {model: auction.lots.make.invoice.buyer}: | self.makeInvoices(cr, uid, [ref("auction_lots_make_invoice_buyer_0")], {"active_model": "auction.lots", "active_ids": [ref("auction_lots_woodenchair0")], "active_id": ref("auction_lots_woodenchair0"), }) - - I check that a "Buyer Invoice" field gets bind with the value. + I check that a "Buyer Invoice" field gets bound with the value. - !python {model: auction.lots}: | from tools.translate import _ @@ -289,7 +289,7 @@ auc_id=self.browse(cr, uid, ref("auction_lots_woodenchair0")) assert(auc_id.state == 'sold'), _('State not changed!') - - Then I click on the Taken Away button. + I click on the Taken Away button. - !python {model: auction.lots}: | self.button_taken_away(cr, uid, [ref("auction_lots_woodenchair0")], {"lang": @@ -307,7 +307,7 @@ !record {model: auction.lots.auction.move, id: auction_lots_auction_move_0}: auction_id: auction.auction_date_2 - - Then I click on the "Move to Auction date" button. + I click on the "Move to Auction date" button. - !python {model: auction.lots.auction.move}: | self.auction_move_set(cr, uid, [ref("auction_lots_auction_move_0")], {"lang": diff --git a/addons/auction/test/auction_report.yml b/addons/auction/test/auction_report.yml index 0219af369b4..962c945f366 100644 --- a/addons/auction/test/auction_report.yml +++ b/addons/auction/test/auction_report.yml @@ -1,5 +1,5 @@ - - In order to test the PDF reports defined on auction, we will print a auction artist + In order to test the PDF reports defined on Auction, we will print an Auction Artist Report - !python {model: auction.lots}: | import netsvc, tools, os @@ -8,7 +8,7 @@ file(os.path.join(tools.config['test_report_directory'], 'auction-auction_artist_report.'+format), 'wb+').write(data) - - In order to test the PDF reports defined on auction, we will print a auction Bid + In order to test the PDF reports defined on Auction, we will print an Auction Bid Report - !python {model: auction.bid}: | import netsvc, tools, os @@ -17,61 +17,61 @@ file(os.path.join(tools.config['test_report_directory'], 'auction-auction_bid_report.'+format), 'wb+').write(data) - - In order to test the PDF reports defined on auction, we will print a lots list Report + In order to test the PDF reports defined on Auction, we will print a Lots List Report - !python {model: auction.lots}: | import netsvc, tools, os (data, format) = netsvc.LocalService('report.lots.list').create(cr, uid, [ref('auction.auction_deposit_3_lot_1'),ref('auction.auction_deposit_3_lot_2')], {}, {}) if tools.config['test_report_directory']: - file(os.path.join(tools.config['test_report_directory'], 'auction-auction_lots_list_report.'+format), 'wb+').write(data) + file(os.path.join(tools.config['test_report_directory'], 'auction-lots_list_report.'+format), 'wb+').write(data) - - In order to test the PDF reports defined on auction, we will print a lots inventory Report + In order to test the PDF reports defined on Auction, we will print a Lots Inventory Report - !python {model: auction.lots}: | import netsvc, tools, os (data, format) = netsvc.LocalService('report.lots.list.inventory').create(cr, uid, [ref('auction.auction_deposit_4_lot_1'),ref('auction.auction_deposit_4_lot_2')], {}, {}) if tools.config['test_report_directory']: - file(os.path.join(tools.config['test_report_directory'], 'auction-auction_lots_inventory_report.'+format), 'wb+').write(data) + file(os.path.join(tools.config['test_report_directory'], 'auction-lots_inventory_report.'+format), 'wb+').write(data) - - In order to test the PDF reports defined on auction, we will print a deposit seller Report + In order to test the PDF reports defined on Auction, we will print a Deposit Seller Report - !python {model: auction.lots}: | import netsvc, tools, os (data, format) = netsvc.LocalService('report.deposit.seller').create(cr, uid, [ref('auction.auction_deposit_5_lot_1'),ref('auction.auction_deposit_5_lot_2')], {}, {}) if tools.config['test_report_directory']: - file(os.path.join(tools.config['test_report_directory'], 'auction-auction_deposit_seller_report.'+format), 'wb+').write(data) + file(os.path.join(tools.config['test_report_directory'], 'auction-deposit_seller_report.'+format), 'wb+').write(data) - - In order to test the PDF reports defined on auction, we will print a catalog + In order to test the PDF reports defined on Auction, we will print a Catalogue List Report - !python {model: auction.dates}: | import netsvc, tools, os (data, format) = netsvc.LocalService('report.auction.cat_flagy').create(cr, uid, [ref('auction.auction_date_1'),ref('auction.auction_date_2')], {}, {}) if tools.config['test_report_directory']: - file(os.path.join(tools.config['test_report_directory'], 'auction-auction_catalog_list.'+format), 'wb+').write(data) + file(os.path.join(tools.config['test_report_directory'], 'auction-catalog_list_report.'+format), 'wb+').write(data) - - In order to test the PDF reports defined on auction, we will print buyer form report + In order to test the PDF reports defined on Auction, we will print a Buyer Form Report - !python {model: auction.lots}: | import netsvc, tools, os (data, format) = netsvc.LocalService('report.buyer_form_report').create(cr, uid, [ref('auction.auction_deposit_6_lot_1'),ref('auction.auction_deposit_6_lot_2')], {}, {}) if tools.config['test_report_directory']: - file(os.path.join(tools.config['test_report_directory'], 'auction-auction_buyer_form.'+format), 'wb+').write(data) + file(os.path.join(tools.config['test_report_directory'], 'auction-buyer_form_report.'+format), 'wb+').write(data) - - In order to test the PDF reports defined on auction, we will print bids phones report + In order to test the PDF reports defined on Auction, we will print a report of Bids Phones Details - !python {model: auction.lots}: | import netsvc, tools, os (data, format) = netsvc.LocalService('report.bids.phones.details').create(cr, uid, [ref('auction.auction_deposit_7_lot_1'),ref('auction.auction_deposit_7_lot_2')], {}, {}) if tools.config['test_report_directory']: - file(os.path.join(tools.config['test_report_directory'], 'auction-auction_bids_phones_details.'+format), 'wb+').write(data) + file(os.path.join(tools.config['test_report_directory'], 'auction-bids_phones_details_report.'+format), 'wb+').write(data) - - In order to test the PDF reports defined on a auction, we will print a Auction Total + In order to test the PDF reports defined on Auction, we will print an Auction Total Report - !python {model: auction.lots}: | import netsvc, tools, os @@ -80,7 +80,7 @@ file(os.path.join(tools.config['test_report_directory'], 'auction-auction_total_report.'+format), 'wb+').write(data) - - In order to test the PDF reports defined on a auction, we will print a Auction Result + In order to test the PDF reports defined on Auction, we will print an Auction Result Report - !python {model: auction.lots}: | import netsvc, tools, os @@ -89,7 +89,7 @@ file(os.path.join(tools.config['test_report_directory'], 'auction-auction_result_report.'+format), 'wb+').write(data) - - In order to test the PDF reports defined on a auction, we will print a Auction Lot + In order to test the PDF reports defined on Auction, we will print an Auction Lot Report - !python {model: auction.lots}: | import netsvc, tools, os @@ -98,28 +98,44 @@ file(os.path.join(tools.config['test_report_directory'], 'auction-auction_lot_report.'+format), 'wb+').write(data) - - In order to test the PDF reports defined on a auction, we will print a Auction Buyer list report + In order to test the PDF reports defined on Auction, we will print an Auction Buyer List Report - !python {model: auction.lots}: | import netsvc, tools, os (data, format) = netsvc.LocalService('report.buyer.list').create(cr, uid, [ref('auction.auction_deposit_10_lot_1'),ref('auction.auction_deposit_10_lot_2')], {}, {}) if tools.config['test_report_directory']: - file(os.path.join(tools.config['test_report_directory'], 'auction-auction_buyer_list_report.'+format), 'wb+').write(data) + file(os.path.join(tools.config['test_report_directory'], 'auction-buyer_list_report.'+format), 'wb+').write(data) - - In order to test the PDF reports defined on a auction, we will print a Auction Flagey Hussier report + In order to test the PDF reports defined on Auction, we will print an Auction Flagey Hussier Report - !python {model: auction.lots}: | import netsvc, tools, os (data, format) = netsvc.LocalService('report.flagey.huissier').create(cr, uid, [ref('auction.auction_deposit_3_lot_1'),ref('auction.auction_deposit_10_lot_2')], {}, {}) if tools.config['test_report_directory']: - file(os.path.join(tools.config['test_report_directory'], 'auction-auction_flagey_hussier_report.'+format), 'wb+').write(data) + file(os.path.join(tools.config['test_report_directory'], 'auction-flagey_hussier_report.'+format), 'wb+').write(data) - - In order to test the PDF reports defined on a auction, we will print Auction Seller Form report + In order to test the PDF reports defined on Auction, we will print an Auction Seller Form Report - !python {model: auction.lots}: | import netsvc, tools, os (data, format) = netsvc.LocalService('report.seller_form_report').create(cr, uid, [ref('auction.auction_deposit_3_lot_1'),ref('auction.auction_deposit_10_lot_2')], {}, {}) if tools.config['test_report_directory']: - file(os.path.join(tools.config['test_report_directory'], 'auction-auction_seller_form_report.'+format), 'wb+').write(data) \ No newline at end of file + file(os.path.join(tools.config['test_report_directory'], 'auction-seller_form_report.'+format), 'wb+').write(data) +- + In order to test the PDF reports defined on Auction, we will a print Buyer Result Report +- + !python {model: auction.lots}: | + import netsvc, tools, os + (data, format) = netsvc.LocalService('report.auction.buyer.result').create(cr, uid, [ref('auction.auction_deposit_3_lot_1'),ref('auction.auction_deposit_10_lot_2')], {}, {}) + if tools.config['test_report_directory']: + file(os.path.join(tools.config['test_report_directory'], 'auction-buyer_result_report.'+format), 'wb+').write(data) +- + In order to test the PDF reports defined on Auction, we will print a Catalogue Report +- + !python {model: auction.lots}: | + import netsvc, tools, os + (data, format) = netsvc.LocalService('report.auction.catelog').create(cr, uid, [ref('auction.auction_deposit_3_lot_1'),ref('auction.auction_deposit_10_lot_2')], {}, {}) + if tools.config['test_report_directory']: + file(os.path.join(tools.config['test_report_directory'], 'auction-catelog_report.'+format), 'wb+').write(data) \ No newline at end of file diff --git a/addons/auction/test/auction_wizard.yml b/addons/auction/test/auction_wizard.yml index f7308f8687c..bfe4f353ed5 100644 --- a/addons/auction/test/auction_wizard.yml +++ b/addons/auction/test/auction_wizard.yml @@ -81,7 +81,7 @@ "tz": False, "active_model": "auction.lots", "active_ids": [ref("auction_lots_painting0")], "active_id": ref("auction_lots_painting0")}) - - I check that the buyer field gets bind with the value. + I check that the buyer field gets bound with the value. - !python {model: auction.lots}: | from tools.translate import _ @@ -89,7 +89,7 @@ assert(auc_id.ach_uid), _('Buyer not assigned!') - - I create statement lines for an object's payment by using the "Pay objects of the buyer" wizard + I create statement lines for the payment of an object using the "Pay objects of the buyer" wizard - I create a bank statement. - @@ -113,7 +113,7 @@ statement_id3: account_bank_statement_st0 total: 4000.0 - - Then I click "Pay" button. + I click "Pay" button. - !python {model: auction.pay.buy}: | self.pay_and_reconcile(cr, uid, [ref("auction_pay_buy_0")], {"lang": "en_US", "tz": @@ -135,14 +135,14 @@ number: 2010/002 objects: 1 - - Then I click on the "Create Invoices" button. + I click on the "Create Invoices" button. - !python {model: auction.lots.make.invoice}: | self.makeInvoices(cr, uid, [ref("auction_lots_make_invoice_0")], {"lang": "en_US", "active_model": "auction.lots", "active_ids": [ref("auction_lots_painting0")], "tz": False, "active_id": ref("auction_lots_painting0"),}) - - I check that a "Seller Invoice" field gets bind with the value. + I check that a "Seller Invoice" field gets bound with the value. - !python {model: auction.lots}: | from tools.translate import _ @@ -157,14 +157,14 @@ number: 2010/003 objects: 1 - - Then I click on the "Create Invoices" button. + I click on the "Create Invoices" button. - !python {model: auction.lots.make.invoice.buyer}: | self.makeInvoices(cr, uid, [ref("auction_lots_make_invoice_buyer_0")], {"lang": "en_US", "active_model": "auction.lots", "active_ids": [ref("auction_lots_painting0")], "tz": False, "active_id": ref("auction_lots_painting0"), }) - - I check that a "Buyer Invoice" field gets bind with the value. + I check that a "Buyer Invoice" field gets bound with the value. - !python {model: auction.lots}: | from tools.translate import _ @@ -176,7 +176,7 @@ !record {model: auction.lots.auction.move, id: auction_lots_auction_move_0}: auction_id: auction.auction_date_2 - - Then I click on the "Move to Auction date" button. + I click on the "Move to Auction date" button. - !python {model: auction.lots.auction.move}: | self.auction_move_set(cr, uid, [ref("auction_lots_auction_move_0")], {"lang": diff --git a/addons/audittrail/__openerp__.py b/addons/audittrail/__openerp__.py index e660b418aa3..c9164bfd839 100644 --- a/addons/audittrail/__openerp__.py +++ b/addons/audittrail/__openerp__.py @@ -25,7 +25,7 @@ 'version': '1.0', 'category': 'Generic Modules/Others', 'description': """ - This module gives the administrator the right + This module gives the administrator the rights to track every user operation on all the objects of the system. diff --git a/addons/audittrail/audittrail.py b/addons/audittrail/audittrail.py index 4278e0a9179..dd843449c8c 100644 --- a/addons/audittrail/audittrail.py +++ b/addons/audittrail/audittrail.py @@ -35,15 +35,15 @@ class audittrail_rule(osv.osv): _description = "Audittrail Rule" _columns = { "name": fields.char("Rule Name", size=32, required=True), - "object_id": fields.many2one('ir.model', 'Object', required=True), + "object_id": fields.many2one('ir.model', 'Object', required=True, help="Select object for which you want to generate log."), "user_id": fields.many2many('res.users', 'audittail_rules_users', 'user_id', 'rule_id', 'Users', help="if User is not added then it will applicable for all users"), - "log_read": fields.boolean("Log Reads"), - "log_write": fields.boolean("Log Writes"), - "log_unlink": fields.boolean("Log Deletes"), - "log_create": fields.boolean("Log Creates"), - "log_action": fields.boolean("Log Action"), - "log_workflow": fields.boolean("Log Workflow"), + "log_read": fields.boolean("Log Reads", help="Select this if you want to keep track of read/open on any record of the object of this rule"), + "log_write": fields.boolean("Log Writes", help="Select this if you want to keep track of modification on any record of the object of this rule"), + "log_unlink": fields.boolean("Log Deletes", help="Select this if you want to keep track of deletion on any record of the object of this rule"), + "log_create": fields.boolean("Log Creates",help="Select this if you want to keep track of creation on any record of the object of this rule"), + "log_action": fields.boolean("Log Action",help="Select this if you want to keep track of actions on the object of this rule"), + "log_workflow": fields.boolean("Log Workflow",help="Select this if you want to keep track of workflow on any record of the object of this rule"), "state": fields.selection((("draft", "Draft"), ("subscribed", "Subscribed")), "State", required=True), diff --git a/addons/base_action_rule/base_action_rule_view.xml b/addons/base_action_rule/base_action_rule_view.xml index 526fe55f4a3..755f6680d34 100644 --- a/addons/base_action_rule/base_action_rule_view.xml +++ b/addons/base_action_rule/base_action_rule_view.xml @@ -14,11 +14,13 @@ form
- - - - - + + + + + + + diff --git a/addons/base_calendar/base_calendar_view.xml b/addons/base_calendar/base_calendar_view.xml index 35e3f794571..c3292452298 100644 --- a/addons/base_calendar/base_calendar_view.xml +++ b/addons/base_calendar/base_calendar_view.xml @@ -128,6 +128,11 @@ + + + - - @@ -457,21 +458,23 @@ - + - - + + + - + + diff --git a/addons/base_calendar/test/base_calendar_test.yml b/addons/base_calendar/test/base_calendar_test.yml index 5ea382babb4..a9a1c039e62 100644 --- a/addons/base_calendar/test/base_calendar_test.yml +++ b/addons/base_calendar/test/base_calendar_test.yml @@ -12,18 +12,18 @@ name: Technical Presentation rrule_type: none - | - Now I will set recurrence for this event to occure monday and friday of week + Now I will set recurrence for this event to occur monday and friday of week - !python {model: calendar.event}: | self.write(cr, uid, [ref("calendar_event_technicalpresentation0")], {'fr': 1, 'mo': 1, 'interval': 1, 'freq': 'weekly', 'rrule_type': 'custom'}) - | - In order to check that recurrent events are views successfully in calenadar view, + In order to check that recurrent events are views successfully in calendar view, I will open calendar view of events - !python {model: calendar.event}: | self.fields_view_get(cr, uid, False, 'calendar', context) - | - In order to check that recurrent events are views successfully in calenadar view, + In order to check that recurrent events are views successfully in calendar view, I will search for one of the recurrent event and count the number of events - !python {model: calendar.event}: | diff --git a/addons/base_module_doc_rst/__openerp__.py b/addons/base_module_doc_rst/__openerp__.py index 8a7fe96b6bd..9a2e33240ac 100644 --- a/addons/base_module_doc_rst/__openerp__.py +++ b/addons/base_module_doc_rst/__openerp__.py @@ -24,10 +24,10 @@ 'version': '1.0', 'category': 'Generic Modules/Base', 'description': """ - * This module generate the Technical Guides of selected modules in Restructured Text format (RST) + * This module generates the Technical Guides of selected modules in Restructured Text format (RST) * It uses the Sphinx (http://sphinx.pocoo.org) implementation of RST * It creates a tarball (.tgz file suffix) containing an index file and one file per module - * Generate Relationship Graph + * Generates Relationship Graph """, 'author': 'OpenERP SA', 'website': 'http://www.openerp.com', diff --git a/addons/base_module_quality/__openerp__.py b/addons/base_module_quality/__openerp__.py index 53e2d0ebb24..a53dde3afe3 100644 --- a/addons/base_module_quality/__openerp__.py +++ b/addons/base_module_quality/__openerp__.py @@ -25,7 +25,7 @@ 'version': '1.0', 'category': 'OpenERP SA Specific Modules/Base module quality', 'description': """ -This module's aim is to check the quality of other modules. +The aim of this module is to check the quality of other modules. It defines a wizard on the list of modules in OpenERP, which allows you to evaluate them on different criteria such as: the respect of OpenERP coding diff --git a/addons/base_module_record/__openerp__.py b/addons/base_module_record/__openerp__.py index 5c6eaa5f712..4d3256dc44d 100644 --- a/addons/base_module_record/__openerp__.py +++ b/addons/base_module_record/__openerp__.py @@ -39,7 +39,7 @@ for custom configurations and demo/testing data. How to use it: Run Administration/Customization/Module Creation/Export Customizations As a Module wizard. -Select datetime critearia of recording and objects to be recorded and Record module. +Select datetime criteria of recording and objects to be recorded and Record module. """, 'author': 'OpenERP SA', 'website': 'http://www.openerp.com', diff --git a/addons/base_setup/installer.py b/addons/base_setup/installer.py index 0c8478ba57d..f415447e5fb 100644 --- a/addons/base_setup/installer.py +++ b/addons/base_setup/installer.py @@ -58,7 +58,7 @@ class base_setup_installer(osv.osv_memory): help="Helps you manage your purchase-related processes such as " "requests for quotations, supplier invoices, etc..."), 'hr':fields.boolean('Human Resources', - help="Helps you manage your human resources by encoding your employees structure, generating work sheets, tracking attendance and more"), + help="Helps you manage your human resources by encoding your employees structure, generating work sheets, tracking attendance and more."), 'point_of_sale':fields.boolean('Point of Sales', help="Helps you get the most out of your points of sales with " "fast sale encoding, simplified payment mode encoding, " @@ -74,7 +74,7 @@ class base_setup_installer(osv.osv_memory): # Vertical modules 'product_expiry':fields.boolean('Food Industry', help="Installs a preselected set of OpenERP applications " - "which will help you manage your industry"), + "which will help you manage your industry."), 'association':fields.boolean('Associations', help="Installs a preselected set of OpenERP " "applications which will help you manage your association " diff --git a/addons/base_vat/__openerp__.py b/addons/base_vat/__openerp__.py index ab148f97494..0dbeac6e806 100644 --- a/addons/base_vat/__openerp__.py +++ b/addons/base_vat/__openerp__.py @@ -26,7 +26,7 @@ Enable the VAT Number for the partner. Check the validity of that VAT Number. This module follows the methods stated at http://sima-pc.com/nif.php for - checking the validity of VAT Number assinged to partners in European countries. + checking the validity of VAT Number assigned to partners in European countries. """, 'author': 'OpenERP SA', 'depends': ['account'], diff --git a/addons/caldav/caldav_node.py b/addons/caldav/caldav_node.py index 63e683bafb7..11f720bdcab 100644 --- a/addons/caldav/caldav_node.py +++ b/addons/caldav/caldav_node.py @@ -19,10 +19,6 @@ # ############################################################################## -from osv import osv, fields -from tools.translate import _ -import pooler -import tools import time from document import nodes import StringIO @@ -103,7 +99,12 @@ class node_calendar_collection(nodes.node_dir): class node_calendar(nodes.node_class): our_type = 'collection' DAV_PROPS = { - "http://calendarserver.org/ns/" : ('getctag',), + "DAV:": ('principal-collection-set'), + "http://cal.me.com/_namespace/" : ('user-state'), + "http://calendarserver.org/ns/" : ( + 'dropbox-home-URL', + 'notification-URL', + 'getctag',), 'http://groupdav.org/': ('resourcetype',), "urn:ietf:params:xml:ns:caldav" : ( 'calendar-description', @@ -114,6 +115,7 @@ class node_calendar(nodes.node_class): 'schedule-outbox-URL',)} DAV_M_NS = { "DAV:" : '_get_dav', + "http://cal.me.com/_namespace/": '_get_dav', 'http://groupdav.org/': '_get_gdav', "http://calendarserver.org/ns/" : '_get_dav', "urn:ietf:params:xml:ns:caldav" : '_get_caldav'} @@ -134,6 +136,33 @@ class node_calendar(nodes.node_class): result = self._get_ttag(cr) + ':' + str(time.time()) return str(result) + def _get_dav_dropbox_home_URL(self, cr): + import urllib + uid = self.context.uid + ctx = self.context.context.copy() + ctx.update(self.dctx) + calendar_obj = self.context._dirobj.pool.get('basic.calendar') + calendar = calendar_obj.browse(cr, uid, self.calendar_id, context=ctx) + res = '%s/%s' %(calendar.collection_id.name, calendar.name) + url = urllib.quote('/%s/%s' % (cr.dbname, res)) + return url + + def _get_dav_notification_URL(self, cr): + import urllib + uid = self.context.uid + ctx = self.context.context.copy() + ctx.update(self.dctx) + calendar_obj = self.context._dirobj.pool.get('basic.calendar') + calendar = calendar_obj.browse(cr, uid, self.calendar_id, context=ctx) + res = '%s/%s' %(calendar.collection_id.name, calendar.name) + url = urllib.quote('/%s/%s' % (cr.dbname, res)) + return url + + def _get_dav_user_state(self, cr): + #TODO + return True + + def get_dav_resourcetype(self, cr): res = [ ('collection', 'DAV:'), (str(self.cal_type + '-collection'), 'http://groupdav.org/'), @@ -258,6 +287,86 @@ class node_calendar(nodes.node_class): def rmcol(self, cr): return False + + def _get_caldav_calendar_data(self, cr): + res = [] + for child in self.children(cr): + res.append(child._get_caldav_calendar_data(cr)) + return res + + def _get_caldav_calendar_description(self, cr): + uid = self.context.uid + calendar_obj = self.context._dirobj.pool.get('basic.calendar') + ctx = self.context.context.copy() + ctx.update(self.dctx) + calendar = calendar_obj.browse(cr, uid, self.calendar_id, context=ctx) + return calendar.description + + def _get_dav_principal_collection_set(self, cr): + import xml + import urllib + uid = self.context.uid + ctx = self.context.context.copy() + ctx.update(self.dctx) + calendar_obj = self.context._dirobj.pool.get('basic.calendar') + calendar = calendar_obj.browse(cr, uid, self.calendar_id, context=ctx) + res = '%s/%s' %(calendar.collection_id.name, calendar.name) + doc = xml.dom.minidom.getDOMImplementation().createDocument(None, 'href', None) + href = doc.documentElement + href.tagName = 'D:href' + huri = doc.createTextNode(urllib.quote('/%s/%s' % (cr.dbname, res))) + href.appendChild(huri) + return href + + def _get_caldav_calendar_home_set(self, cr): + import xml.dom.minidom + import urllib + uid = self.context.uid + ctx = self.context.context.copy() + ctx.update(self.dctx) + doc = xml.dom.minidom.getDOMImplementation().createDocument(None, 'href', None) + + calendar_obj = self.context._dirobj.pool.get('basic.calendar') + calendar = calendar_obj.browse(cr, uid, self.calendar_id, context=ctx) + huri = doc.createTextNode(urllib.quote('/%s/%s' % (cr.dbname, calendar.collection_id.name))) + href = doc.documentElement + href.tagName = 'D:href' + href.appendChild(huri) + return href + + def _get_caldav_calendar_user_address_set(self, cr): + import xml.dom.minidom + uid = self.context.uid + ctx = self.context.context.copy() + ctx.update(self.dctx) + user_obj = self.context._dirobj.pool.get('res.users') + user = user_obj.browse(cr, uid, uid, context=ctx) + doc = xml.dom.minidom.getDOMImplementation().createDocument(None, 'href', None) + href = doc.documentElement + href.tagName = 'D:href' + huri = doc.createTextNode('MAILTO:' + str(user.email) or str(user.name)) + href.appendChild(huri) + return href + + def _get_caldav_schedule_outbox_URL(self, cr): + return self._get_caldav_schedule_inbox_URL(cr) + + def _get_caldav_schedule_inbox_URL(self, cr): + import xml.dom.minidom + import urllib + uid = self.context.uid + ctx = self.context.context.copy() + ctx.update(self.dctx) + calendar_obj = self.context._dirobj.pool.get('basic.calendar') + calendar = calendar_obj.browse(cr, uid, self.calendar_id, context=ctx) + res = '%s/%s' %(calendar.collection_id.name, calendar.name) + doc = xml.dom.minidom.getDOMImplementation().createDocument(None, 'href', None) + href = doc.documentElement + href.tagName = 'D:href' + huri = doc.createTextNode(urllib.quote('/%s/%s' % (cr.dbname, res))) + href.appendChild(huri) + return href + class res_node_calendar(nodes.node_class): our_type = 'file' @@ -295,7 +404,6 @@ class res_node_calendar(nodes.node_class): self.res_id = res_id def open(self, cr, mode=False): - uid = self.context.uid if self.type in ('collection','database'): return False s = StringIO.StringIO(self.get_data(cr)) @@ -309,6 +417,9 @@ class res_node_calendar(nodes.node_class): context.update({'model': self.model, 'res_id':self.res_id}) res = calendar_obj.export_cal(cr, uid, [self.calendar_id], context=context) return res + + def _get_caldav_calendar_data(self, cr): + return self.get_data(cr) def get_data_len(self, cr, fil_obj = None): return self.content_length @@ -327,67 +438,6 @@ class res_node_calendar(nodes.node_class): res = '%d' % (self.calendar_id) return res - def _get_caldav_calendar_data(self, cr): - return self.get_data(cr) - - - def _get_caldav_calendar_description(self, cr): - uid = self.context.uid - calendar_obj = self.context._dirobj.pool.get('basic.calendar') - ctx = self.context.context.copy() - ctx.update(self.dctx) - calendar = calendar_obj.browse(cr, uid, self.calendar_id, context=ctx) - return calendar.description - - - def _get_caldav_calendar_home_set(self, cr): - import xml.dom.minidom - import urllib - uid = self.context.uid - ctx = self.context.context.copy() - ctx.update(self.dctx) - doc = xml.dom.minidom.getDOMImplementation().createDocument(None, 'href', None) - - calendar_obj = self.context._dirobj.pool.get('basic.calendar') - calendar = calendar_obj.browse(cr, uid, self.calendar_id, context=ctx) - huri = doc.createTextNode(urllib.quote('/%s/%s' % (cr.dbname, calendar.collection_id.name))) - href = doc.documentElement - href.tagName = 'D:href' - href.appendChild(huri) - return href - - def _get_caldav_calendar_user_address_set(self, cr): - import xml.dom.minidom - dirobj = self.context._dirobj - uid = self.context.uid - ctx = self.context.context.copy() - ctx.update(self.dctx) - user_obj = self.context._dirobj.pool.get('res.users') - user = user_obj.browse(cr, uid, uid, context=ctx) - doc = xml.dom.minidom.getDOMImplementation().createDocument(None, 'href', None) - href = doc.documentElement - href.tagName = 'D:href' - huri = doc.createTextNode('MAILTO:' + user.email) - href.appendChild(huri) - return href - - - def _get_caldav_schedule_inbox_URL(self, cr): - import xml.dom.minidom - import urllib - uid = self.context.uid - ctx = self.context.context.copy() - ctx.update(self.dctx) - calendar_obj = self.context._dirobj.pool.get('basic.calendar') - calendar = calendar_obj.browse(cr, uid, self.calendar_id, context=ctx) - res = '%s/%s' %(calendar.name, calendar.collection_id.name) - doc = xml.dom.minidom.getDOMImplementation().createDocument(None, 'href', None) - href = doc.documentElement - href.tagName = 'D:href' - huri = doc.createTextNode(urllib.quote('/%s/%s' % (cr.dbname, res))) - href.appendChild(huri) - return href - def rm(self, cr): uid = self.context.uid @@ -401,7 +451,6 @@ class res_node_calendar(nodes.node_class): return res - def _get_caldav_schedule_outbox_URL(self, cr): - return self._get_caldav_schedule_inbox_URL(cr) + # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4 diff --git a/addons/caldav/calendar.py b/addons/caldav/calendar.py index 01c35880fbb..88b0549a3de 100644 --- a/addons/caldav/calendar.py +++ b/addons/caldav/calendar.py @@ -293,7 +293,6 @@ class CalDAV(object): att_data = [] exdates = [] - _server_tzinfo = pytz.timezone(tools.get_server_timezone()) for cal_data in child.getChildren(): if cal_data.name.lower() == 'organizer': @@ -453,7 +452,7 @@ class CalDAV(object): else: for key1, val1 in self.ical_get(field, 'mapping').items(): if val1 == data[map_field]: - vevent.add(field).value = key1 + vevent.add(field).value = key1.upper() return vevent def check_import(self, cr, uid, vals, context=None): @@ -521,7 +520,7 @@ class CalDAV(object): ical = vobject.iCalendar() self.create_ics(cr, uid, datas, vobj, ical, context=context) return ical - except Exception, e: + except: raise # osv.except_osv(('Error !'), (str(e))) def import_cal(self, cr, uid, content, data_id=None, context=None): @@ -654,7 +653,7 @@ class Calendar(CalDAV, osv.osv): data_id = self.search(cr, uid, [])[0] cal = self.browse(cr, uid, data_id, context=context) cal_children = {} - count = 0 + for line in cal.line_ids: cal_children[line.name] = line.object_id.model objs = [] diff --git a/addons/crm/crm.py b/addons/crm/crm.py index c8dde37d9e5..c6f7759859c 100644 --- a/addons/crm/crm.py +++ b/addons/crm/crm.py @@ -20,8 +20,6 @@ ############################################################################## import time -from datetime import datetime -from datetime import timedelta import base64 import tools from osv import fields @@ -431,7 +429,7 @@ class crm_case(object): # Send an email subject = "Reminder: [%s] %s" % (str(case.id), case.name, ) - flag = tools.email_send( + tools.email_send( src, [dest], subject, @@ -587,7 +585,7 @@ class crm_case_categ(osv.osv): _description = "Category of case" _columns = { - 'name': fields.char('Case Category Name', size=64, required=True, translate=True), + 'name': fields.char('Name', size=64, required=True, translate=True), 'section_id': fields.many2one('crm.case.section', 'Sales Team'), 'object_id': fields.many2one('ir.model', 'Object Name'), } @@ -636,7 +634,7 @@ class crm_case_stage(osv.osv): 'section_id': fields.many2one('crm.case.section', 'Sales Team'), 'sequence': fields.integer('Sequence', help="Gives the sequence order when displaying a list of case stages."), 'object_id': fields.many2one('ir.model', 'Object Name'), - 'probability': fields.float('Probability (%)', required=True), + 'probability': fields.float('Probability (%)', required=True, help="This percentage depicts the default/average probability of the Case for this stage to be a success"), 'on_change': fields.boolean('Change Probability Automatically', \ help="Change Probability on next and previous stages."), 'requirements': fields.text('Requirements') diff --git a/addons/crm/crm_installer.py b/addons/crm/crm_installer.py index 6797afc62e0..32551d438c4 100644 --- a/addons/crm/crm_installer.py +++ b/addons/crm/crm_installer.py @@ -20,12 +20,7 @@ ############################################################################## from lxml import etree -from operator import itemgetter from osv import fields, osv -import netsvc -import os -import pooler -import tools class crm_installer(osv.osv_memory): _name = 'crm.installer' @@ -33,15 +28,15 @@ class crm_installer(osv.osv_memory): _columns = { 'name': fields.char('Name', size=64), - 'crm_helpdesk': fields.boolean('Helpdesk', help="Manages an Helpdesk service."), + 'crm_helpdesk': fields.boolean('Helpdesk', help="Manages a Helpdesk service."), 'crm_fundraising': fields.boolean('Fundraising', help="This may help associations in their fundraising process and tracking."), 'crm_claim': fields.boolean('Claims', help="Manages the suppliers and customers claims, including your corrective or preventive actions."), 'crm_caldav': fields.boolean('Calendar Synchronizing', help="Helps you to synchronize the meetings with other calendar clients and mobiles."), 'sale_crm': fields.boolean('Opportunity to Quotation', help="This module relates sale from opportunity cases in the CRM."), - 'fetchmail': fields.boolean('Fetch Emails', help="Fetchmail Server."), - 'thunderbird': fields.boolean('Thunderbird', help="Allows you to link your e-mail to OpenERP's documents. You can attach it to any existing one in OpenERP or create a new one"), - 'outlook': fields.boolean('MS-Outlook', help="Allows you to link your e-mail to OpenERP's documents. You can attach it to any existing one in OpenERP or create a new one"), - 'wiki_sale_faq': fields.boolean('Sale FAQ', help="Sale FAQ."), + 'fetchmail': fields.boolean('Fetch Emails', help="Allows you to receive E-Mails from POP/IMAP server."), + 'thunderbird': fields.boolean('Thunderbird', help="Allows you to link your e-mail to OpenERP's documents. You can attach it to any existing one in OpenERP or create a new one."), + 'outlook': fields.boolean('MS-Outlook', help="Allows you to link your e-mail to OpenERP's documents. You can attach it to any existing one in OpenERP or create a new one."), + 'wiki_sale_faq': fields.boolean('Sale FAQ', help="Helps you manage wiki pages for Frequently Asked Questions on Sales Application."), } def fields_view_get(self, cr, uid, view_id=None, view_type='form', context=None, toolbar=False, submenu=False): diff --git a/addons/crm/crm_installer_view.xml b/addons/crm/crm_installer_view.xml index 5fad3f41a3d..ece3bae31ec 100644 --- a/addons/crm/crm_installer_view.xml +++ b/addons/crm/crm_installer_view.xml @@ -16,7 +16,7 @@ - Enhance your CRM basic Application with additional Addons. + Enhance your core CRM Application with additional functionalities. 13 diff --git a/addons/crm/crm_lead.py b/addons/crm/crm_lead.py index da09795547a..0a552a4165a 100644 --- a/addons/crm/crm_lead.py +++ b/addons/crm/crm_lead.py @@ -125,6 +125,7 @@ class crm_lead(crm_case, osv.osv): domain="['|',('section_id','=',section_id),('section_id','=',False)]"), 'channel_id': fields.many2one('res.partner.canal', 'Channel'), + 'contact_name': fields.char('Contact Name', size=64), 'partner_name': fields.char("Partner Name", size=64), 'optin': fields.boolean('Opt-In'), 'optout': fields.boolean('Opt-Out'), diff --git a/addons/crm/crm_lead_view.xml b/addons/crm/crm_lead_view.xml index 41d41ef0502..2df1369bbb1 100644 --- a/addons/crm/crm_lead_view.xml +++ b/addons/crm/crm_lead_view.xml @@ -55,7 +55,7 @@ - + + + + - + @@ -211,7 +214,7 @@ -