From 2405f334e2e39f06e2de569b86042b2693400d8b Mon Sep 17 00:00:00 2001 From: Numerigraphe - Lionel Sausin Date: Wed, 7 Jul 2010 17:29:09 +0200 Subject: [PATCH 01/28] [FIX] account: wrong invoice number sequence for fiscal year in a certain case [FIX] account: context not initialized correctly in sequence lp bug: https://launchpad.net/bugs/602188 fixed bzr revid: ls@numerigraphe.fr-20100707152909-ocjbj6c784oqeg54 --- addons/account/invoice.py | 8 ++++++-- addons/account/sequence.py | 11 ++++++----- 2 files changed, 12 insertions(+), 7 deletions(-) diff --git a/addons/account/invoice.py b/addons/account/invoice.py index 62f998fa751..6e2ff2a7baa 100644 --- a/addons/account/invoice.py +++ b/addons/account/invoice.py @@ -923,12 +923,16 @@ class account_invoice(osv.osv): obj_inv = self.browse(cr, uid, ids)[0] for (id, invtype, number, move_id, reference) in cr.fetchall(): if not number: + tmp_context = { + 'fiscalyear_id': inv.period_id.fiscalyear_id.id + } if obj_inv.journal_id.invoice_sequence_id: sid = obj_inv.journal_id.invoice_sequence_id.id number = self.pool.get('ir.sequence').get_id(cr, uid, sid, 'id', {'fiscalyear_id': obj_inv.period_id.fiscalyear_id.id}) else: - number = self.pool.get('ir.sequence').get(cr, uid, - 'account.invoice.' + invtype) + number = obj_seq.get_id(cr, uid, + 'account.invoice.%s' % invtype, + 'code=%s', context=tmp_context) if invtype in ('in_invoice', 'in_refund'): ref = reference else: diff --git a/addons/account/sequence.py b/addons/account/sequence.py index c90e9ef93c7..1186d4b8c7f 100644 --- a/addons/account/sequence.py +++ b/addons/account/sequence.py @@ -19,7 +19,7 @@ # ############################################################################## -from osv import fields,osv +from osv import fields, osv class ir_sequence_fiscalyear(osv.osv): _name = 'account.sequence.fiscalyear' @@ -31,7 +31,7 @@ class ir_sequence_fiscalyear(osv.osv): } _sql_constraints = [ - ('main_id', 'CHECK (sequence_main_id != sequence_id)', 'Main Sequence must be different from current !'), + ('main_id', 'CHECK (sequence_main_id != sequence_id)', 'Main Sequence must be different from current !'), ] ir_sequence_fiscalyear() @@ -41,15 +41,16 @@ class ir_sequence(osv.osv): _columns = { 'fiscal_ids' : fields.one2many('account.sequence.fiscalyear', 'sequence_main_id', 'Sequences') } - def get_id(self, cr, uid, sequence_id, test='id', context={}): + def get_id(self, cr, uid, sequence_id, test='id', context=None): + if context is None: + context = {} cr.execute('select id from ir_sequence where '+test+'=%s and active=%s', (sequence_id, True,)) res = cr.dictfetchone() if res: for line in self.browse(cr, uid, res['id'], context=context).fiscal_ids: if line.fiscalyear_id.id==context.get('fiscalyear_id', False): return super(ir_sequence, self).get_id(cr, uid, line.sequence_id.id, test="id", context=context) - return super(ir_sequence, self).get_id(cr, uid, sequence_id, test, context) + return super(ir_sequence, self).get_id(cr, uid, sequence_id, test, context=context) ir_sequence() - # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: From dbf34fd87eed009dfecf0c15c42430d1c42a0231 Mon Sep 17 00:00:00 2001 From: Numerigraphe - Lionel Sausin Date: Wed, 7 Jul 2010 17:33:14 +0200 Subject: [PATCH 02/28] [REF] account: code formating in sequence bzr revid: ls@numerigraphe.fr-20100707153314-thxkmi5k9my09eq4 --- addons/account/sequence.py | 31 +++++++++++++++++++++---------- 1 file changed, 21 insertions(+), 10 deletions(-) diff --git a/addons/account/sequence.py b/addons/account/sequence.py index 1186d4b8c7f..b75e7f3e34e 100644 --- a/addons/account/sequence.py +++ b/addons/account/sequence.py @@ -25,13 +25,17 @@ class ir_sequence_fiscalyear(osv.osv): _name = 'account.sequence.fiscalyear' _rec_name = "sequence_main_id" _columns = { - "sequence_id": fields.many2one("ir.sequence", 'Sequence', required=True, ondelete='cascade'), - "sequence_main_id": fields.many2one("ir.sequence", 'Main Sequence', required=True, ondelete='cascade'), - "fiscalyear_id": fields.many2one('account.fiscalyear', 'Fiscal Year', required=True, ondelete='cascade') + "sequence_id": fields.many2one("ir.sequence", 'Sequence', required=True, + ondelete='cascade'), + "sequence_main_id": fields.many2one("ir.sequence", 'Main Sequence', + required=True, ondelete='cascade'), + "fiscalyear_id": fields.many2one('account.fiscalyear', 'Fiscal Year', + required=True, ondelete='cascade') } _sql_constraints = [ - ('main_id', 'CHECK (sequence_main_id != sequence_id)', 'Main Sequence must be different from current !'), + ('main_id', 'CHECK (sequence_main_id != sequence_id)', + 'Main Sequence must be different from current !'), ] ir_sequence_fiscalyear() @@ -39,18 +43,25 @@ ir_sequence_fiscalyear() class ir_sequence(osv.osv): _inherit = 'ir.sequence' _columns = { - 'fiscal_ids' : fields.one2many('account.sequence.fiscalyear', 'sequence_main_id', 'Sequences') + 'fiscal_ids' : fields.one2many('account.sequence.fiscalyear', + 'sequence_main_id', 'Sequences') } def get_id(self, cr, uid, sequence_id, test='id', context=None): if context is None: context = {} - cr.execute('select id from ir_sequence where '+test+'=%s and active=%s', (sequence_id, True,)) + cr.execute('select id from ir_sequence where ' + + test + '=%s and active=%s', (sequence_id, True,)) res = cr.dictfetchone() if res: - for line in self.browse(cr, uid, res['id'], context=context).fiscal_ids: - if line.fiscalyear_id.id==context.get('fiscalyear_id', False): - return super(ir_sequence, self).get_id(cr, uid, line.sequence_id.id, test="id", context=context) - return super(ir_sequence, self).get_id(cr, uid, sequence_id, test, context=context) + for line in self.browse(cr, uid, res['id'], + context=context).fiscal_ids: + if line.fiscalyear_id.id == context.get('fiscalyear_id', False): + return super(ir_sequence, self).get_id(cr, uid, + line.sequence_id.id, + test="id", + context=context) + return super(ir_sequence, self).get_id(cr, uid, sequence_id, test, + context=context) ir_sequence() # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: From 4dc7691b1a6840b26d13350edeed29ed78c55dc8 Mon Sep 17 00:00:00 2001 From: Numerigraphe - Lionel Sausin Date: Mon, 12 Jul 2010 12:12:41 +0200 Subject: [PATCH 03/28] [FIX] account: wrong variable name bzr revid: ls@numerigraphe.fr-20100712101241-cn1unvdzds3dy2ol --- addons/account/invoice.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/addons/account/invoice.py b/addons/account/invoice.py index 6e2ff2a7baa..05ca7d5d36e 100644 --- a/addons/account/invoice.py +++ b/addons/account/invoice.py @@ -920,15 +920,15 @@ class account_invoice(osv.osv): 'FROM account_invoice ' \ 'WHERE id IN %s', (tuple(ids),)) - obj_inv = self.browse(cr, uid, ids)[0] + inv = self.browse(cr, uid, ids)[0] for (id, invtype, number, move_id, reference) in cr.fetchall(): if not number: tmp_context = { 'fiscalyear_id': inv.period_id.fiscalyear_id.id } - if obj_inv.journal_id.invoice_sequence_id: - sid = obj_inv.journal_id.invoice_sequence_id.id - number = self.pool.get('ir.sequence').get_id(cr, uid, sid, 'id', {'fiscalyear_id': obj_inv.period_id.fiscalyear_id.id}) + if inv.journal_id.invoice_sequence_id: + sid = inv.journal_id.invoice_sequence_id.id + number = self.pool.get('ir.sequence').get_id(cr, uid, sid, 'id', {'fiscalyear_id': inv.period_id.fiscalyear_id.id}) else: number = obj_seq.get_id(cr, uid, 'account.invoice.%s' % invtype, @@ -1578,4 +1578,4 @@ class res_partner(osv.osv): res_partner() -# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: \ No newline at end of file +# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: From 3dec5629c96aab45601f8277e2c1264fcca32d3b Mon Sep 17 00:00:00 2001 From: Numerigraphe - Lionel Sausin Date: Mon, 12 Jul 2010 12:40:05 +0200 Subject: [PATCH 04/28] [FIX] account: wrong variable name [IMP] account: sequence view [REF] account: small cleanup lp bug: https://launchpad.net/bugs/602188 fixed bzr revid: ls@numerigraphe.fr-20100712104005-4vkqdu4lcsqgzt21 --- addons/account/invoice.py | 14 +++++++++----- addons/account/sequence_view.xml | 4 ++++ 2 files changed, 13 insertions(+), 5 deletions(-) diff --git a/addons/account/invoice.py b/addons/account/invoice.py index 05ca7d5d36e..d475a2e19b4 100644 --- a/addons/account/invoice.py +++ b/addons/account/invoice.py @@ -927,12 +927,16 @@ class account_invoice(osv.osv): 'fiscalyear_id': inv.period_id.fiscalyear_id.id } if inv.journal_id.invoice_sequence_id: - sid = inv.journal_id.invoice_sequence_id.id - number = self.pool.get('ir.sequence').get_id(cr, uid, sid, 'id', {'fiscalyear_id': inv.period_id.fiscalyear_id.id}) + sequence_id = inv.journal_id.invoice_sequence_id.id + number = self.pool.get('ir.sequence').get_id(cr, uid, + sequence_id, + 'id', + context=tmp_context) else: - number = obj_seq.get_id(cr, uid, - 'account.invoice.%s' % invtype, - 'code=%s', context=tmp_context) + number = self.pool.get('ir.sequence').get_id(cr, uid, + 'account.invoice.%s' % invtype, + 'code', + context=tmp_context) if invtype in ('in_invoice', 'in_refund'): ref = reference else: diff --git a/addons/account/sequence_view.xml b/addons/account/sequence_view.xml index 2d4d159cb41..565725d5d71 100644 --- a/addons/account/sequence_view.xml +++ b/addons/account/sequence_view.xml @@ -14,6 +14,10 @@ +
+ + + From 0b510c279838bd48f26bed5d80a7bc5c1f20fcf0 Mon Sep 17 00:00:00 2001 From: Numerigraphe - Lionel Sausin Date: Tue, 13 Jul 2010 10:58:52 +0200 Subject: [PATCH 05/28] [ADD] test for bug 602188: wrong invoice number sequence for fiscal year in a certain case bzr revid: ls@numerigraphe.fr-20100713085852-mkvywgcdmx2ule58 --- addons/account/__openerp__.py | 1 + .../account/test/sequence_bug602188_test.xml | 53 +++++++++++++++++++ 2 files changed, 54 insertions(+) create mode 100644 addons/account/test/sequence_bug602188_test.xml diff --git a/addons/account/__openerp__.py b/addons/account/__openerp__.py index d3a58272b89..c663ed29e06 100644 --- a/addons/account/__openerp__.py +++ b/addons/account/__openerp__.py @@ -124,6 +124,7 @@ module named account_vouchers 'project/analytic_account_demo.xml', 'demo/account_minimal.xml', 'account_unit_test.xml', + 'test/sequence_bug602188_test.xml', 'board_account_demo.xml', ], 'test': [ diff --git a/addons/account/test/sequence_bug602188_test.xml b/addons/account/test/sequence_bug602188_test.xml new file mode 100644 index 00000000000..3a9200b98e6 --- /dev/null +++ b/addons/account/test/sequence_bug602188_test.xml @@ -0,0 +1,53 @@ + + + + + + + + + + account.invoice.out_invoice + + TEST- + -bug602188 + + + + + + + + + + + + + + + + + draft + out_invoice + + lp:602188 + + + + + + open + TEST-042-bug602188 + + + + + + + + From a9a8c13e68a3a8d75a61d625cc783e523de054db Mon Sep 17 00:00:00 2001 From: Numerigraphe - Lionel Sausin Date: Tue, 13 Jul 2010 17:53:13 +0200 Subject: [PATCH 06/28] [REF] account: rewrite the sequence test in YAML bzr revid: ls@numerigraphe.fr-20100713155313-cw7e9l5gjhfkba70 --- addons/account/__openerp__.py | 2 +- addons/account/test/account_sequence_test.yml | 45 ++++++++++++++++ .../account/test/sequence_bug602188_test.xml | 53 ------------------- 3 files changed, 46 insertions(+), 54 deletions(-) create mode 100644 addons/account/test/account_sequence_test.yml delete mode 100644 addons/account/test/sequence_bug602188_test.xml diff --git a/addons/account/__openerp__.py b/addons/account/__openerp__.py index c663ed29e06..09e51486ad2 100644 --- a/addons/account/__openerp__.py +++ b/addons/account/__openerp__.py @@ -124,10 +124,10 @@ module named account_vouchers 'project/analytic_account_demo.xml', 'demo/account_minimal.xml', 'account_unit_test.xml', - 'test/sequence_bug602188_test.xml', 'board_account_demo.xml', ], 'test': [ + 'test/account_sequence_test.yml', 'test/account_customer_invoice.yml', 'test/account_supplier_invoice.yml', 'test/account_change_currency.yml', diff --git a/addons/account/test/account_sequence_test.yml b/addons/account/test/account_sequence_test.yml new file mode 100644 index 00000000000..3be824d2ca0 --- /dev/null +++ b/addons/account/test/account_sequence_test.yml @@ -0,0 +1,45 @@ +- In order to test the invoice numbering, I create a sequence for out invoices. +- !record {model: ir.sequence, id: seq_out_invoice_test}: + name: Account Invoice Out for the demonstration Fiscal Year # XXX indicate the name of the fiscal year + code: account.invoice.out_invoice + padding: 3 + prefix: FY- + suffix: -TEST + number_next: 42 + +- I link the new sequence to the demo sequence and the demo fiscal years. +- !record {model: account.sequence.fiscalyear, id: seq_out_invoice_test_fy}: + sequence_id: seq_out_invoice_test + sequence_main_id: seq_out_invoice + fiscalyear_id: data_fiscalyear + +- I create a draft customer invoice in a period of the demo fiscal year +- !record {model: account.invoice, id: invoice_seq_test}: + account_id: account.a_recv + address_contact_id: base.res_partner_address_zen + address_invoice_id: base.res_partner_address_zen + company_id: base.main_company + currency_id: base.EUR + invoice_line: + - account_id: account.a_sale + name: '[PC3] Medium PC' + price_unit: 900.0 + quantity: 10.0 + product_id: product.product_product_pc3 + uos_id: product.product_uom_unit + journal_id: account.sales_journal + partner_id: base.res_partner_3 + reference_type: none + period_id: period_1 + +- I create the invoice, as is 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" +- !assert {model: account.invoice, id: invoice_seq_test}: + - state == 'open' + +- I check that the invoice got the right number using our sequence + # This used to fail because of bug #602188 +- !assert {model: account.invoice, id: invoice_seq_test}: + - number == 'FY-042-TEST' diff --git a/addons/account/test/sequence_bug602188_test.xml b/addons/account/test/sequence_bug602188_test.xml deleted file mode 100644 index 3a9200b98e6..00000000000 --- a/addons/account/test/sequence_bug602188_test.xml +++ /dev/null @@ -1,53 +0,0 @@ - - - - - - - - - - account.invoice.out_invoice - - TEST- - -bug602188 - - - - - - - - - - - - - - - - - draft - out_invoice - - lp:602188 - - - - - - open - TEST-042-bug602188 - - - - - - - - From 27a3dc94188534ee7034d53b4e0f9c9b08f90ceb Mon Sep 17 00:00:00 2001 From: "psi (Open ERP)" Date: Thu, 15 Jul 2010 11:17:56 +0530 Subject: [PATCH 07/28] [IMP] scrum: Rename scrum to project_scrum and rename all the object accordinglly bzr revid: psi@tinyerp.co.in-20100715054756-loyjd9bhda0xq125 --- addons/{scrum => project_scrum}/__init__.py | 6 +- .../{scrum => project_scrum}/__openerp__.py | 16 ++--- .../board_project_scrum_view.xml} | 10 ++-- addons/{scrum => project_scrum}/i18n/ar.po | 0 addons/{scrum => project_scrum}/i18n/bg.po | 0 addons/{scrum => project_scrum}/i18n/bs.po | 0 addons/{scrum => project_scrum}/i18n/ca.po | 0 addons/{scrum => project_scrum}/i18n/cs.po | 0 addons/{scrum => project_scrum}/i18n/de.po | 0 addons/{scrum => project_scrum}/i18n/es.po | 0 addons/{scrum => project_scrum}/i18n/es_AR.po | 0 addons/{scrum => project_scrum}/i18n/et.po | 0 addons/{scrum => project_scrum}/i18n/fr.po | 0 addons/{scrum => project_scrum}/i18n/hr.po | 0 addons/{scrum => project_scrum}/i18n/hu.po | 0 addons/{scrum => project_scrum}/i18n/id.po | 0 addons/{scrum => project_scrum}/i18n/it.po | 0 addons/{scrum => project_scrum}/i18n/ko.po | 0 addons/{scrum => project_scrum}/i18n/lt.po | 0 addons/{scrum => project_scrum}/i18n/nl.po | 0 addons/{scrum => project_scrum}/i18n/nl_BE.po | 0 addons/{scrum => project_scrum}/i18n/pl.po | 0 addons/{scrum => project_scrum}/i18n/pt.po | 0 addons/{scrum => project_scrum}/i18n/pt_BR.po | 0 addons/{scrum => project_scrum}/i18n/ro.po | 0 addons/{scrum => project_scrum}/i18n/ru.po | 0 .../{scrum => project_scrum}/i18n/scrum.pot | 0 addons/{scrum => project_scrum}/i18n/sl.po | 0 addons/{scrum => project_scrum}/i18n/sq.po | 0 addons/{scrum => project_scrum}/i18n/sv.po | 0 addons/{scrum => project_scrum}/i18n/tlh.po | 0 addons/{scrum => project_scrum}/i18n/tr.po | 0 addons/{scrum => project_scrum}/i18n/uk.po | 0 addons/{scrum => project_scrum}/i18n/vi.po | 0 addons/{scrum => project_scrum}/i18n/zh_CN.po | 0 addons/{scrum => project_scrum}/i18n/zh_TW.po | 0 .../process/project_scrum_process.xml} | 20 +++---- .../project_scrum.py} | 52 ++++++++-------- .../project_scrum_demo.xml} | 58 +++++++++--------- .../project_scrum_report.xml} | 2 +- .../project_scrum_view.xml} | 59 ++++++++++--------- .../report/__init__.py | 0 .../report/_burndown.py | 0 .../report/sprint_burndown.py | 4 +- .../report/task_burndown.py | 0 .../security/ir.model.access.csv | 9 +++ .../wizard/__init__.py | 6 +- .../project_scrum_backlog_create_task.py} | 4 +- ...roject_scrum_backlog_create_task_view.xml} | 12 ++-- .../wizard/project_scrum_backlog_merger.py} | 12 ++-- .../project_scrum_backlog_merger_view.xml} | 10 ++-- .../wizard/project_scrum_backlog_sprint.py} | 8 +-- .../project_scrum_backlog_sprint_view.xml} | 10 ++-- addons/scrum/security/ir.model.access.csv | 9 --- 54 files changed, 155 insertions(+), 152 deletions(-) rename addons/{scrum => project_scrum}/__init__.py (96%) rename addons/{scrum => project_scrum}/__openerp__.py (85%) rename addons/{scrum/board_scrum_view.xml => project_scrum/board_project_scrum_view.xml} (87%) rename addons/{scrum => project_scrum}/i18n/ar.po (100%) rename addons/{scrum => project_scrum}/i18n/bg.po (100%) rename addons/{scrum => project_scrum}/i18n/bs.po (100%) rename addons/{scrum => project_scrum}/i18n/ca.po (100%) rename addons/{scrum => project_scrum}/i18n/cs.po (100%) rename addons/{scrum => project_scrum}/i18n/de.po (100%) rename addons/{scrum => project_scrum}/i18n/es.po (100%) rename addons/{scrum => project_scrum}/i18n/es_AR.po (100%) rename addons/{scrum => project_scrum}/i18n/et.po (100%) rename addons/{scrum => project_scrum}/i18n/fr.po (100%) rename addons/{scrum => project_scrum}/i18n/hr.po (100%) rename addons/{scrum => project_scrum}/i18n/hu.po (100%) rename addons/{scrum => project_scrum}/i18n/id.po (100%) rename addons/{scrum => project_scrum}/i18n/it.po (100%) rename addons/{scrum => project_scrum}/i18n/ko.po (100%) rename addons/{scrum => project_scrum}/i18n/lt.po (100%) rename addons/{scrum => project_scrum}/i18n/nl.po (100%) rename addons/{scrum => project_scrum}/i18n/nl_BE.po (100%) rename addons/{scrum => project_scrum}/i18n/pl.po (100%) rename addons/{scrum => project_scrum}/i18n/pt.po (100%) rename addons/{scrum => project_scrum}/i18n/pt_BR.po (100%) rename addons/{scrum => project_scrum}/i18n/ro.po (100%) rename addons/{scrum => project_scrum}/i18n/ru.po (100%) rename addons/{scrum => project_scrum}/i18n/scrum.pot (100%) rename addons/{scrum => project_scrum}/i18n/sl.po (100%) rename addons/{scrum => project_scrum}/i18n/sq.po (100%) rename addons/{scrum => project_scrum}/i18n/sv.po (100%) rename addons/{scrum => project_scrum}/i18n/tlh.po (100%) rename addons/{scrum => project_scrum}/i18n/tr.po (100%) rename addons/{scrum => project_scrum}/i18n/uk.po (100%) rename addons/{scrum => project_scrum}/i18n/vi.po (100%) rename addons/{scrum => project_scrum}/i18n/zh_CN.po (100%) rename addons/{scrum => project_scrum}/i18n/zh_TW.po (100%) rename addons/{scrum/process/scrum_process.xml => project_scrum/process/project_scrum_process.xml} (84%) rename addons/{scrum/scrum.py => project_scrum/project_scrum.py} (90%) rename addons/{scrum/scrum_demo.xml => project_scrum/project_scrum_demo.xml} (90%) rename addons/{scrum/scrum_report.xml => project_scrum/project_scrum_report.xml} (62%) rename addons/{scrum/scrum_view.xml => project_scrum/project_scrum_view.xml} (93%) rename addons/{scrum => project_scrum}/report/__init__.py (100%) rename addons/{scrum => project_scrum}/report/_burndown.py (100%) rename addons/{scrum => project_scrum}/report/sprint_burndown.py (94%) rename addons/{scrum => project_scrum}/report/task_burndown.py (100%) create mode 100644 addons/project_scrum/security/ir.model.access.csv rename addons/{scrum => project_scrum}/wizard/__init__.py (90%) rename addons/{scrum/wizard/scrum_backlog_create_task.py => project_scrum/wizard/project_scrum_backlog_create_task.py} (95%) rename addons/{scrum/wizard/scrum_backlog_create_task_view.xml => project_scrum/wizard/project_scrum_backlog_create_task_view.xml} (77%) rename addons/{scrum/wizard/scrum_backlog_merger.py => project_scrum/wizard/project_scrum_backlog_merger.py} (93%) rename addons/{scrum/wizard/scrum_backlog_merger_view.xml => project_scrum/wizard/project_scrum_backlog_merger_view.xml} (86%) rename addons/{scrum/wizard/scrum_backlog_sprint.py => project_scrum/wizard/project_scrum_backlog_sprint.py} (92%) rename addons/{scrum/wizard/scrum_backlog_sprint_view.xml => project_scrum/wizard/project_scrum_backlog_sprint_view.xml} (80%) delete mode 100644 addons/scrum/security/ir.model.access.csv diff --git a/addons/scrum/__init__.py b/addons/project_scrum/__init__.py similarity index 96% rename from addons/scrum/__init__.py rename to addons/project_scrum/__init__.py index 204f3abd3f8..ab85f618822 100644 --- a/addons/scrum/__init__.py +++ b/addons/project_scrum/__init__.py @@ -1,6 +1,6 @@ # -*- coding: utf-8 -*- ############################################################################## -# +# # OpenERP, Open Source Management Solution # Copyright (C) 2004-2010 Tiny SPRL (). # @@ -15,11 +15,11 @@ # 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 . +# along with this program. If not, see . # ############################################################################## -import scrum +import project_scrum import report import wizard diff --git a/addons/scrum/__openerp__.py b/addons/project_scrum/__openerp__.py similarity index 85% rename from addons/scrum/__openerp__.py rename to addons/project_scrum/__openerp__.py index ef552090c67..c42908ff50a 100644 --- a/addons/scrum/__openerp__.py +++ b/addons/project_scrum/__openerp__.py @@ -51,15 +51,15 @@ 'init_xml': [], 'update_xml': [ 'security/ir.model.access.csv', - 'scrum_report.xml', - 'wizard/scrum_backlog_create_task_view.xml', - 'scrum_view.xml', - 'process/scrum_process.xml', - 'wizard/scrum_backlog_sprint_view.xml', - 'wizard/scrum_backlog_merger_view.xml', - "board_scrum_view.xml", + 'project_scrum_report.xml', + 'wizard/project_scrum_backlog_create_task_view.xml', + 'project_scrum_view.xml', + 'process/project_scrum_process.xml', + 'wizard/project_scrum_backlog_sprint_view.xml', + 'wizard/project_scrum_backlog_merger_view.xml', + "board_project_scrum_view.xml", ], - 'demo_xml': ['scrum_demo.xml'], + 'demo_xml': ['project_scrum_demo.xml'], 'installable': True, 'active': False, 'certificate': '0084121063261', diff --git a/addons/scrum/board_scrum_view.xml b/addons/project_scrum/board_project_scrum_view.xml similarity index 87% rename from addons/scrum/board_scrum_view.xml rename to addons/project_scrum/board_project_scrum_view.xml index 5184aefa79c..3889e8f7af3 100644 --- a/addons/scrum/board_scrum_view.xml +++ b/addons/project_scrum/board_project_scrum_view.xml @@ -2,8 +2,8 @@ - scrum.sprint.dashboard.tree - scrum.sprint + project.scrum.sprint.dashboard.tree + project.scrum.sprint tree @@ -14,21 +14,21 @@ - + + + Forward to Partner crm.lead.forward.to.partner form form + new diff --git a/addons/crm/wizard/crm_send_email.py b/addons/crm/wizard/crm_send_email.py index bc2b5357c15..02acee1c1d2 100644 --- a/addons/crm/wizard/crm_send_email.py +++ b/addons/crm/wizard/crm_send_email.py @@ -49,7 +49,7 @@ class crm_send_new_email(osv.osv_memory): 'email_cc' : fields.char('CC', size=512, help="Carbon Copy: list of recipients that will receive"\ " a copy of this mail, and future communication related to this case"), 'subject': fields.char('Subject', size=512, required=True), - 'text': fields.text('Message', required=True), + 'body': fields.text('Message Body', required=True), 'state': fields.selection(crm.AVAILABLE_STATES, string='Set New State To', required=True), 'attachment_ids' : fields.one2many('crm.send.mail.attachment', 'wizard_id'), } @@ -68,10 +68,10 @@ class crm_send_new_email(osv.osv_memory): if not context: context = {} - if not context.get('model'): + if not context.get('active_model'): raise osv.except_osv(_('Error'), _('Can not send mail!')) - model = context.get('model') + model = context.get('active_model') case_pool = self.pool.get(model) res_id = context and context.get('active_id', False) or False @@ -91,16 +91,16 @@ class crm_send_new_email(osv.osv_memory): hist = hist_obj.browse(cr, uid, res_id) message_id = hist.message_id model = hist.model - model_pool = self.pool.get(model) + case_pool = self.pool.get(model) res_id = hist.res_id ref_id = hist.ref_id - case = model_pool.browse(cr, uid, res_id) + case = case_pool.browse(cr, uid, res_id) emails = [obj.email_to] email_cc = obj.email_cc and obj.email_cc.split(',') or '' emails = filter(None, emails) - body = obj.text + body = obj.body - body = case_pool.format_body(body) + body = body and tools.ustr(body) or '' email_from = getattr(obj, 'email_from', False) x_headers = {} if message_id: @@ -124,7 +124,7 @@ class crm_send_new_email(osv.osv_memory): case_pool.history(cr, uid, [case], _('Send'), history=True, \ email=obj.email_to, details=body, \ subject=obj.subject, email_from=email_from, \ - email_cc=email_cc, message_id=message_id, \ + email_cc=', '.join(email_cc), message_id=message_id, \ references=ref_id or message_id, attach=attach) if obj.state == 'unchanged': pass @@ -145,7 +145,7 @@ class crm_send_new_email(osv.osv_memory): if not context: context = {} - if not context.get('model'): + if not context.get('active_model'): raise osv.except_osv(_('Error'), _('Can not send mail!')) res = super(crm_send_new_email, self).default_get(cr, uid, fields, context=context) @@ -154,7 +154,7 @@ class crm_send_new_email(osv.osv_memory): res.update(self.get_reply_defaults(cr, uid, fields, context=context)) return res - model = context.get('model') + model = context.get('active_model') mod_obj = self.pool.get(model) res_id = context and context.get('active_ids', []) or [] @@ -172,8 +172,8 @@ class crm_send_new_email(osv.osv_memory): res.update({'subject': tools.ustr(context.get('subject', case.name) or '')}) if 'email_cc' in fields: res.update({'email_cc': tools.ustr(case.email_cc or '')}) - if 'text' in fields: - res.update({'text': u'\n'+(tools.ustr(case.user_id.signature or ''))}) + if 'body' in fields: + res.update({'body': u'\n'+(tools.ustr(case.user_id.signature or ''))}) if 'state' in fields: res.update({'state': u'pending'}) @@ -209,7 +209,7 @@ class crm_send_new_email(osv.osv_memory): signature = u'\n' + (tools.ustr(case.user_id.signature or '')) + u'\n' original = [signature] - if include_original == True and 'text' in fields: + if include_original == True and 'body' in fields: header = u'-------- Original Message --------' sender = u'From: %s' %(tools.ustr(hist.email_from or '')) to = u'To: %s' % (tools.ustr(hist.email_to or '')) @@ -218,10 +218,14 @@ class crm_send_new_email(osv.osv_memory): original = [signature, header, sender, to, sentdate, desc] - res['text']= u'\n' + u'\n'.join(original) + res['body']= u'\n' + u'\n'.join(original) if 'subject' in fields: res.update({u'subject': u'Re: %s' %(tools.ustr(hist.name or ''))}) + if 'email_cc' in fields: + res.update({'email_cc': case.email_cc and tools.ustr(case.email_cc) or False}) + if 'reply_to' in fields: + res.update({'reply_to': case.section_id.reply_to}) if 'state' in fields: res['state'] = u'pending' return res @@ -239,7 +243,7 @@ class crm_send_new_email(osv.osv_memory): if not context: context = {} - if not context.get('model'): + if not context.get('active_model'): raise osv.except_osv(_('Error'), _('Can not send mail!')) return True diff --git a/addons/crm/wizard/crm_send_email_view.xml b/addons/crm/wizard/crm_send_email_view.xml index df7218cbc02..aac7d854b88 100644 --- a/addons/crm/wizard/crm_send_email_view.xml +++ b/addons/crm/wizard/crm_send_email_view.xml @@ -9,7 +9,7 @@ crm.send.mail form -
+ @@ -19,7 +19,7 @@ - + @@ -46,7 +46,7 @@ - Send New Mail + Send Mail crm.send.mail form form @@ -77,7 +77,7 @@ - +