diff --git a/addons/account/account_menuitem.xml b/addons/account/account_menuitem.xml
index 7394b15f0be..51c26706446 100644
--- a/addons/account/account_menuitem.xml
+++ b/addons/account/account_menuitem.xml
@@ -2,7 +2,7 @@
-
+
@@ -11,7 +11,7 @@
-
+
@@ -26,7 +26,6 @@
-
diff --git a/addons/account/account_view.xml b/addons/account/account_view.xml
index c2323c54839..9e1cb3bb7e2 100644
--- a/addons/account/account_view.xml
+++ b/addons/account/account_view.xml
@@ -31,8 +31,8 @@
-
-
+
+
@@ -94,15 +94,15 @@
form
@@ -122,32 +122,11 @@
-
- account.period.search
- account.period
- search
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Periods
account.period
form
- tree,form,search
+ tree,form
@@ -202,14 +181,15 @@
-
-
-
-
+
+
+
+
+
@@ -236,6 +216,8 @@
+
+
@@ -313,6 +295,8 @@
+
+
@@ -696,7 +680,8 @@
-
+
+
@@ -724,6 +709,7 @@
+
@@ -742,7 +728,7 @@
-
+
@@ -1796,6 +1782,8 @@
+
+
@@ -1896,6 +1884,10 @@
+
+
+
+
@@ -2015,6 +2007,7 @@
+
@@ -2026,9 +2019,9 @@
-
-
-
+
+
+
diff --git a/addons/account/product_view.xml b/addons/account/product_view.xml
index 0095cb1505c..97b99084a44 100644
--- a/addons/account/product_view.xml
+++ b/addons/account/product_view.xml
@@ -35,8 +35,8 @@
-
+
diff --git a/addons/account/project/project_view.xml b/addons/account/project/project_view.xml
index b5a01c62847..53ba5453742 100644
--- a/addons/account/project/project_view.xml
+++ b/addons/account/project/project_view.xml
@@ -61,6 +61,10 @@
+
+
+
+
@@ -293,7 +297,7 @@
-
+
account.analytic.journal.search
account.analytic.journal
@@ -306,7 +310,7 @@
-
+
account.analytic.journal.form
account.analytic.journal
@@ -350,7 +354,7 @@
-->
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Account Print Journal
@@ -8,21 +30,26 @@
form
-
+
Account Print Journal
ir.actions.act_window
diff --git a/addons/account/wizard/account_third_party_ledger.xml b/addons/account/wizard/account_third_party_ledger.xml
index e731086af2c..9cb0463ea48 100644
--- a/addons/account/wizard/account_third_party_ledger.xml
+++ b/addons/account/wizard/account_third_party_ledger.xml
@@ -8,6 +8,7 @@
form
diff --git a/addons/account/wizard/account_vat_view.xml b/addons/account/wizard/account_vat_view.xml
index fa53ac97a17..8978dc50ee3 100644
--- a/addons/account/wizard/account_vat_view.xml
+++ b/addons/account/wizard/account_vat_view.xml
@@ -8,14 +8,19 @@
form
diff --git a/addons/account_budget/crossovered_budget_view.xml b/addons/account_budget/crossovered_budget_view.xml
index b10e6d8e160..81c5e67f961 100644
--- a/addons/account_budget/crossovered_budget_view.xml
+++ b/addons/account_budget/crossovered_budget_view.xml
@@ -310,14 +310,6 @@
auto="False"
menu="False"/>-->
-
-
-
-
-
-
diff --git a/addons/email_template/email_template_mailbox_view.xml b/addons/email_template/email_template_mailbox_view.xml
index 93a1a9958d4..a49fabbd523 100644
--- a/addons/email_template/email_template_mailbox_view.xml
+++ b/addons/email_template/email_template_mailbox_view.xml
@@ -111,10 +111,8 @@
-
-
-
-
+
+
diff --git a/addons/project/project_view.xml b/addons/project/project_view.xml
index cbb7b9d7337..86250622c5a 100644
--- a/addons/project/project_view.xml
+++ b/addons/project/project_view.xml
@@ -514,7 +514,7 @@
-
+
).
#
@@ -15,7 +15,7 @@
# 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 .
#
##############################################################################
@@ -27,7 +27,7 @@ class stock_move(osv.osv):
'sale_line_id': fields.many2one('sale.order.line', 'Sale Order Line', ondelete='set null', select=True, readonly=True),
}
_defaults = {
- 'sale_line_id': lambda *a:False
+ 'sale_line_id': False
}
stock_move()
@@ -37,7 +37,7 @@ class stock_picking(osv.osv):
'sale_id': fields.many2one('sale.order', 'Sale Order', ondelete='set null', select=True, readonly=True),
}
_defaults = {
- 'sale_id': lambda *a: False
+ 'sale_id': False
}
def get_currency_id(self, cursor, user, picking):
@@ -127,7 +127,7 @@ class stock_picking(osv.osv):
for invoice in invoice_obj.browse(cursor, user, invoice_ids,
context=context):
invoices[invoice.id] = invoice
-
+
for picking in picking_obj.browse(cursor, user, picking_ids,
context=context):
@@ -135,15 +135,15 @@ class stock_picking(osv.osv):
continue
sale_lines = picking.sale_id.order_line
invoice_created = invoices[result[picking.id]]
-
+
for inv in invoice_obj.browse(cursor, user, [invoice_created.id], context=context):
if not inv.fiscal_position:
invoice_obj.write(cursor, user, [inv.id], {'fiscal_position': picking.sale_id.fiscal_position.id}, context=context)
-
+
if picking.sale_id.client_order_ref:
inv_name = picking.sale_id.client_order_ref + " : " + invoice_created.name
invoice_obj.write(cursor, user, [invoice_created.id], {'name': inv_name}, context=context)
-
+
for sale_line in sale_lines:
if sale_line.product_id.type == 'service' and sale_line.invoiced == False:
if group:
@@ -189,7 +189,7 @@ class stock_picking(osv.osv):
})
return result
-
+
def action_cancel(self, cr, uid, ids, context={}):
res = super(stock_picking, self).action_cancel(cr, uid, ids, context=context)
for pick in self.browse(cr, uid, ids, context):
@@ -200,13 +200,9 @@ class stock_picking(osv.osv):
call_ship_end = False
break
if call_ship_end:
- self.pool.get('sale.order').action_ship_end(cr, uid, [pick.sale_id.id], context)
+ self.pool.get('sale.order').action_ship_end(cr, uid, [pick.sale_id.id], context)
return res
-
stock_picking()
-
-
-# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
-
+# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
\ No newline at end of file
diff --git a/addons/sale/test/prepaid_sale_order.yml b/addons/sale/test/prepaid_sale_order.yml
index cd33b1bc73e..03f5ddf8aae 100644
--- a/addons/sale/test/prepaid_sale_order.yml
+++ b/addons/sale/test/prepaid_sale_order.yml
@@ -2,41 +2,41 @@
In order to test the sale module in the Open-ERP, I need to configure details regarding product & customer.
-
I am going to sell my Mobile products to the customer with name Cleartrail
--
+-
I create View Account Type.
--
+-
!record {model: account.account.type, id: account_account_type_view0}:
close_method: none
code: View
name: View
sign: 1
--
+-
I create Income Account Type.
--
+-
!record {model: account.account.type, id: account_account_type_income0}:
close_method: unreconciled
code: Income
name: Income
sign: 1
--
+-
I create Expense Account Type.
--
+-
!record {model: account.account.type, id: account_account_type_expense0}:
close_method: unreconciled
code: Expense
name: Expense
sign: 1
--
+-
I create Cash Account Type.
--
+-
!record {model: account.account.type, id: account_account_type_cash0}:
close_method: balance
code: Cash
name: Cash
sign: 1
--
+-
I create Minimal Chart Account.
--
+-
!record {model: account.account, id: account_account_minimalchart0}:
code: '0'
company_id: base.main_company
@@ -46,9 +46,9 @@
parent_right: 12
type: view
user_type: account_account_type_view0
--
+-
I create Payable Account.
--
+-
!record {model: account.account, id: account_account_payable1}:
code: AP
company_id: base.main_company
@@ -60,12 +60,11 @@
reconcile: true
type: payable
user_type: account_account_type_expense0
--
+-
I create Receivable Account.
--
+-
!record {model: account.account, id: account_account_receivable0}:
code: AR
- company_id: base.main_company
currency_mode: current
name: Receivable
parent_id: account_account_minimalchart0
@@ -74,9 +73,9 @@
reconcile: true
type: receivable
user_type: account_account_type_income0
--
+-
I create Cash Account.
--
+-
!record {model: account.account, id: account_account_cash0}:
code: C
company_id: base.main_company
@@ -87,9 +86,9 @@
parent_right: 7
type: other
user_type: account_account_type_cash0
--
+-
I create Purchases Account.
--
+-
!record {model: account.account, id: account_account_purchases0}:
code: P
company_id: base.main_company
@@ -100,9 +99,9 @@
parent_right: 9
type: other
user_type: account_account_type_expense0
--
+-
I create Sales Account.
--
+-
!record {model: account.account, id: account_account_sales0}:
code: S
company_id: base.main_company
@@ -113,9 +112,9 @@
parent_right: 11
type: other
user_type: account_account_type_income0
--
+-
I create Purchase Journal.
--
+-
!record {model: account.journal, id: account_journal_purchasejournal0}:
code: PUJ
company_id: base.main_company
@@ -125,9 +124,9 @@
sequence_id: account.sequence_purchase_journal
type: purchase
view_id: account.account_journal_view
--
+-
I create Sale Journal.
--
+-
!record {model: account.journal, id: account_journal_salejournal0}:
code: SAJ
company_id: base.main_company
@@ -137,84 +136,83 @@
sequence_id: account.sequence_sale_journal
type: sale
view_id: account.account_journal_view
--
+-
I create Bank Journal.
--
+-
!record {model: account.journal, id: account_journal_bankjournal0}:
code: BNK
- company_id: base.main_company
default_credit_account_id: account_account_cash0
default_debit_account_id: account_account_cash0
name: Bank Journal
sequence_id: account.sequence_journal
type: cash
view_id: account.account_journal_bank_view
--
+-
I create ir.property for account payable.
--
+-
!record {model: ir.property, id: ir_property_propertyaccountexpensecateg0}:
company_id: base.main_company
fields_id: account.field_res_partner_property_account_payable
name: property_account_expense_categ
value_reference: account.account,5
--
+-
I create ir.property for account receivable.
--
+-
!record {model: ir.property, id: ir_property_propertyaccountincomecateg0}:
company_id: base.main_company
fields_id: account.field_res_partner_property_account_receivable
name: property_account_income_categ
value_reference: account.account,6
--
+-
I create Partner category Customers.
--
+-
!record {model: res.partner.category, id: res_partner_category_customers0}:
name: Customers
-
I create Cleartrail Customer.
--
+-
!record {model: res.partner, id: res_partner_cleartrail0}:
category_id:
- res_partner_category_customers0
name: Cleartrail
--
+-
I create contact address for Cleartrail.
--
+-
!record {model: res.partner.address, id: res_partner_address_1}:
partner_id: res_partner_cleartrail0
street: onam plaza, 14 B palasia A B Road
type: contact
--
+-
I create invoice address for Cleartrail.
--
+-
!record {model: res.partner.address, id: res_partner_address_2}:
partner_id: res_partner_cleartrail0
street: sarda house 24 B palasia, A B Road
type: invoice
--
+-
I create delivery address for Cleartrail.
--
+-
!record {model: res.partner.address, id: res_partner_address_3}:
partner_id: res_partner_cleartrail0
street: sangam house 15 B palasia, A B Road
type: delivery
-
Customer Cleartrail has specific instrument requirement regarding the stockable products.
--
+-
I define product category Mobile Products Sellable.
--
+-
!record {model: product.category, id: product_category_allproductssellable0}:
name: Mobile Products Sellable
-
-
--
- I define product category Mobile Services.
--
+
+
+-
+ I define product category Mobile Services.
+-
!record {model: product.category, id: product_category_services0}:
name: Mobile Services
--
+-
I define LG Viewty Smart product template.
--
+-
!record {model: product.template, id: product_template_lgviewtysmart0}:
categ_id: product_category_allproductssellable0
cost_method: standard
@@ -227,9 +225,9 @@
type: product
uom_id: product.product_uom_unit
uom_po_id: product.product_uom_unit
--
+-
I define LG Viewty Smart product.
--
+-
!record {model: product.product, id: product_product_lgviewtysmart0}:
categ_id: product_category_allproductssellable0
cost_method: standard
@@ -249,7 +247,7 @@
uom_po_id: product.product_uom_unit
-
I create a Sale Order for LG Viewty Smart for qty 500 having order_policy prepaid.
--
+-
!record {model: sale.order, id: sale_order_so1}:
date_order: '2010-05-03'
invoice_quantity: order
@@ -273,11 +271,11 @@
picking_policy: direct
pricelist_id: product.list0
shop_id: sale.shop
-
-
--
+
+
+-
I confirm the sale order.
--
+-
!workflow {model: sale.order, action: order_confirm, ref: sale_order_so1}
-
I will verify whether the invoice has been generated for SO since Shipping policy is 'Payment Before Delivery'
@@ -285,67 +283,67 @@
!python {model: sale.order}: |
so = self.browse(cr, uid, ref("sale_order_so1"))
assert so.invoice_ids, "Invoices has not been generated for sale_order_so1"
--
+-
I open the Invoice for the SO.
--
+-
!python {model: account.invoice}: |
sale_order_obj = self.pool.get('sale.order')
so = sale_order_obj.browse(cr, uid, ref("sale_order_so1"))
import netsvc
- wf_service = netsvc.LocalService("workflow")
+ wf_service = netsvc.LocalService("workflow")
invoice_ids = so.invoice_ids
for invoice in invoice_ids:
- wf_service.trg_validate(uid, 'account.invoice',invoice.id,'invoice_open', cr)
+ wf_service.trg_validate(uid, 'account.invoice',invoice.id,'invoice_open', cr)
-
Creating a account invoice pay entry.
--
+-
!record {model: account.invoice.pay, id: account_invoice_pay_tst1}:
amount: 85000.0
date: '2010-05-10'
journal_id: sale.account_journal_bankjournal0
name: tst
period_id: account.period_5
--
+-
I pay the invoice.
--
+-
!python {model: account.invoice.pay}: |
sale_order_obj = self.pool.get('sale.order')
- so = sale_order_obj.browse(cr, uid, ref("sale_order_so1"))
+ so = sale_order_obj.browse(cr, uid, ref("sale_order_so1"))
self.wo_check(cr, uid, [ref("account_invoice_pay_tst1")], {"lang": "en_US", "tz":
False, "active_model": 'account.invoice', "active_ids": [so.invoice_ids[0].id], "type":
"out_invoice", "active_id": so.invoice_ids[0].id, })
-
-
--
+
+
+-
Creating an account invoice pay writeoff entry.
--
+-
!record {model: account.invoice.pay.writeoff, id: account_invoice_pay_writeoff_0}:
analytic_id: account.analytic_customers
comment: Write-Off
writeoff_acc_id: account.a_sale
writeoff_journal_id: sale.account_journal_bankjournal0
-
-
--
+
+
+-
Pay and Reconcile the Invoice.
--
+-
!python {model: account.invoice.pay.writeoff}: |
sale_order_obj = self.pool.get('sale.order')
- so = sale_order_obj.browse(cr, uid, ref("sale_order_so1"))
+ so = sale_order_obj.browse(cr, uid, ref("sale_order_so1"))
self.pay_and_reconcile_writeoff(cr, uid, [ref("account_invoice_pay_writeoff_0")],
{"lang": 'en_US', "tz": False, "active_model": 'account.invoice', "active_ids":
[so.invoice_ids[0].id], "type": "out_invoice", "active_id": so.invoice_ids[0].id })
-
-
+
+
-
I will verify the picking associated with the sale order sale_order_so1
--
+-
!python {model: sale.order}: |
so = self.browse(cr, uid, ref("sale_order_so1"))
assert so.picking_ids,"Picking has not been generated for sale_order_so1"
--
+-
Products are delivered to the Cleartrail Customer.
--
+-
!python {model: stock.picking }: |
import time
sale_order_obj = self.pool.get('sale.order')
@@ -371,9 +369,9 @@
-
!python {model: stock.picking }: |
sale_order_obj = self.pool.get('sale.order')
- so = sale_order_obj.browse(cr, uid, ref("sale_order_so1"))
+ so = sale_order_obj.browse(cr, uid, ref("sale_order_so1"))
picking_id = self.search(cr, uid, [('origin','=',so.name),('type','=','out')])
-
+
if picking_id:
pick = self.browse(cr,uid,picking_id[0])
assert (pick.state) =='done', "Picking for SO is not in done state."
diff --git a/addons/sale_journal/__openerp__.py b/addons/sale_journal/__openerp__.py
index 94d343debb9..80643eb5d4d 100644
--- a/addons/sale_journal/__openerp__.py
+++ b/addons/sale_journal/__openerp__.py
@@ -19,7 +19,6 @@
#
##############################################################################
-
{
'name': 'Managing sales and deliveries by journal',
'version': '1.0',
@@ -49,7 +48,7 @@
""",
'author': 'Tiny',
'website': 'http://www.openerp.com',
- 'depends': ['stock', 'sale'],
+ 'depends': ['sale'],
'init_xml': ['sale_journal_data.xml'],
'update_xml': [
'security/ir.model.access.csv',
diff --git a/addons/sale_journal/sale_journal.py b/addons/sale_journal/sale_journal.py
index 9e6144998b0..41d770d5760 100644
--- a/addons/sale_journal/sale_journal.py
+++ b/addons/sale_journal/sale_journal.py
@@ -18,10 +18,10 @@
# along with this program. If not, see .
#
##############################################################################
+import time
from osv import osv, fields
import netsvc
-import time
from tools.translate import _
class sale_journal_invoice_type(osv.osv):
@@ -34,8 +34,8 @@ class sale_journal_invoice_type(osv.osv):
'invoicing_method': fields.selection([('simple','Non grouped'),('grouped','Grouped')], 'Invoicing method', required=True),
}
_defaults = {
- 'active': lambda *a: True,
- 'invoicing_method': lambda *a:'simple'
+ 'active': True,
+ 'invoicing_method': 'simple'
}
sale_journal_invoice_type()
@@ -60,12 +60,12 @@ class sale_journal(osv.osv):
'note': fields.text('Note'),
}
_defaults = {
- 'date': lambda *a: time.strftime('%Y-%m-%d'),
- 'date_created': lambda *a: time.strftime('%Y-%m-%d'),
+ '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:
@@ -75,9 +75,9 @@ class sale_journal(osv.osv):
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)
+ 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:
@@ -87,30 +87,30 @@ class sale_journal(osv.osv):
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)
+ 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)
+ 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)
+ self.log(cr, uid, id, message)
return True
-
+
def button_close(self, cr, uid, ids, context={}):
self.write(cr, uid, ids, {'state':'done', 'date_validation':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)
+ self.log(cr, uid, id, message)
return True
-
+
sale_journal()
class picking_journal(osv.osv):
diff --git a/addons/sale_margin/sale_margin.py b/addons/sale_margin/sale_margin.py
index 77f7be55342..c390bf769e2 100644
--- a/addons/sale_margin/sale_margin.py
+++ b/addons/sale_margin/sale_margin.py
@@ -25,7 +25,8 @@ from tools import config
class sale_order_line(osv.osv):
_name = "sale.order.line"
_inherit = "sale.order.line"
- def _product_margin(self, cr, uid, ids, field_name, arg, context):
+
+ def _product_margin(self, cr, uid, ids, field_name, arg, context=None):
res = {}
for line in self.browse(cr, uid, ids):
res[line.id] = 0
@@ -46,7 +47,7 @@ sale_order_line()
class sale_order(osv.osv):
_inherit = "sale.order"
- def _product_margin(self, cr, uid, ids, field_name, arg, context):
+ def _product_margin(self, cr, uid, ids, field_name, arg, context=None):
result = {}
for sale in self.browse(cr, uid, ids, context=context):
result[sale.id] = 0.0
@@ -69,14 +70,13 @@ class stock_picking(osv.osv):
def create_invoice(self, cr, uid, ids, *args):
# need to carify with new requirement
- res = False
invoice_ids = []
margin_deduce = 0.0
picking_obj = self.pool.get('stock.picking')
picking_obj.write(cr, uid, ids, {'invoice_state' : '2binvoiced'})
res = picking_obj.action_invoice_create(cr, uid, ids, type='out_invoice', context={})
invoice_ids = res.values()
- picking_obj.write(cr, uid, ids,{'invoice_ids':[[6,0,invoice_ids]]})
+ picking_obj.write(cr, uid, ids,{'invoice_ids': [[6,0,invoice_ids]]})
return True
stock_picking()
diff --git a/addons/sale_mrp/__openerp__.py b/addons/sale_mrp/__openerp__.py
index 9ac55911983..1496e46c87e 100644
--- a/addons/sale_mrp/__openerp__.py
+++ b/addons/sale_mrp/__openerp__.py
@@ -25,9 +25,10 @@
'version': '1.0',
'category': 'Generic Modules/Sales & MRP',
'description': """
- This module provides facility to the user to install mrp and sale modules
- at a time. It is basically used when we want to keep track of production
+ This module provides facility to the user to install mrp and sale modules
+ at a time. It is basically used when we want to keep track of production
orders generated from sale orders.
+ It adds sale name and sale Reference on production order
""",
'author': 'Tiny',
'website': 'http://www.openerp.com',
diff --git a/addons/scrum/scrum.py b/addons/scrum/scrum.py
index b734473dce8..40f17319df7 100644
--- a/addons/scrum/scrum.py
+++ b/addons/scrum/scrum.py
@@ -305,23 +305,31 @@ class scrum_meeting(osv.osv):
}
def button_send_to_master(self, cr, uid, ids, context=None):
+ if context is None:
+ context = {}
meeting_id = self.browse(cr, uid, ids)[0]
- user = self.pool.get('res.users').browse(cr, uid, uid, context=context)
- if meeting_id and meeting_id.sprint_id.scrum_master_id.user_email:
- self.email_send(cr, uid, ids, email)
+ email = meeting_id.sprint_id.scrum_master_id.user_email
+ if email:
+ self.email_send(cr, uid, ids, email, context=context)
else:
raise osv.except_osv(_('Error !'), _('Please provide email address for scrum master defined on sprint.'))
return True
def button_send_product_owner(self, cr, uid, ids, context=None):
+ if context is None:
+ context = {}
+ context.update({'button_send_product_owner': True})
meeting_id = self.browse(cr, uid, ids)[0]
- if meeting_id.sprint_id.product_owner_id.user_email:
- self.email_send(cr,uid,ids,email)
+ email = meeting_id.sprint_id.product_owner_id.user_email
+ if email:
+ self.email_send(cr, uid, ids, email, context=context)
else:
raise osv.except_osv(_('Error !'), _('Please provide email address for product owner defined on sprint.'))
return True
def email_send(self, cr, uid, ids, email, context=None):
+ if context is None:
+ context = {}
email_from = tools.config.get('email_from', False)
meeting_id = self.browse(cr,uid,ids)[0]
user = self.pool.get('res.users').browse(cr, uid, uid, context=context)
@@ -332,7 +340,12 @@ class scrum_meeting(osv.osv):
sub_name = meeting_id.name or 'Scrum Meeting of %s '%meeting_id.date
flag = tools.email_send(user_email , [email], sub_name, body, reply_to=None, openobject_id=str(meeting_id.id))
if not flag:
- raise osv.except_osv(_('Error !'), _(' Email Not send to %s!' % meeting_id.sprint_id.product_owner_id.name))
+ if context.get('button_send_product_owner', False):
+ raise osv.except_osv(_('Error !'), _(' Email Not send to the product owner %s!' % meeting_id.sprint_id.product_owner_id.name))
+ raise osv.except_osv(_('Error !'), _(' Email Not send to the scrum master %s!' % meeting_id.sprint_id.scrum_master_id.name))
+ if context.get('button_send_product_owner', False):
+ raise osv.except_osv(_('Information !'), _(' Email send successfully to product owner %s!' % meeting_id.sprint_id.product_owner_id.name))
+ raise osv.except_osv(_('Information!'), _(' Email send successfully to scrum master %s!'% meeting_id.sprint_id.scrum_master_id.name))
return True
scrum_meeting()
diff --git a/addons/scrum/scrum_view.xml b/addons/scrum/scrum_view.xml
index 2219d29c3ed..d6a63d4eae6 100644
--- a/addons/scrum/scrum_view.xml
+++ b/addons/scrum/scrum_view.xml
@@ -43,7 +43,7 @@
-
+
@@ -61,7 +61,7 @@
-
@@ -198,7 +198,7 @@
-
+
diff --git a/addons/scrum/security/ir.model.access.csv b/addons/scrum/security/ir.model.access.csv
index 76ba229e952..46e4b315a6b 100644
--- a/addons/scrum/security/ir.model.access.csv
+++ b/addons/scrum/security/ir.model.access.csv
@@ -2,8 +2,14 @@
"access_scrum_sprint","scrum.sprint","model_scrum_sprint","project.group_project_user",1,0,0,0
"access_scrum_product_backlog","scrum.product.backlog","model_scrum_product_backlog","project.group_project_user",1,1,1,1
"access_scrum_meeting","scrum.meeting","model_scrum_meeting","project.group_project_user",1,0,0,0
+"access_product_uom_project_user","product.uom project user","product.model_product_uom","project.group_project_user",1,0,0,0
+"access_backlog_create_task_user","backlog.create.task user","model_backlog_create_task","project.group_project_user",1,1,1,1
+"access_scrum_backlog_merge_user","scrum.backlog.merge user","model_scrum_backlog_merge","project.group_project_user",1,1,1,1
+"access_backlog_assign_sprint_user ","backlog.assign.sprint user","model_backlog_assign_sprint","project.group_project_user",1,0,0,0
"access_scrum_meeting_manager","scrum.meeting.manager","model_scrum_meeting","project.group_project_manager",1,1,1,1
"access_scrum_sprint_manager","scrum.sprint.manager","model_scrum_sprint","project.group_project_manager",1,1,1,1
"access_scrum_product_backlog_manager","scrum.product.backlog manager","model_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_backlog_create_task_manager","backlog.create.task manager","model_backlog_create_task","project.group_project_manager",1,1,1,1
+"access_scrum_backlog_merge_manager","scrum.backlog.merge manager","model_scrum_backlog_merge","project.group_project_manager",1,1,1,1
+"access_backlog_assign_sprint_manager","backlog.assign.sprint manager","model_backlog_assign_sprint","project.group_project_manager",1,1,1,1
diff --git a/addons/stock/stock_data.xml b/addons/stock/stock_data.xml
index 9b3bf1fb9d5..205e4a44396 100644
--- a/addons/stock/stock_data.xml
+++ b/addons/stock/stock_data.xml
@@ -12,16 +12,16 @@
+ Request link
+ -->
Production Lot
stock.production.lot
+ Resource: stock.location
+ -->
Physical Locations
view
@@ -41,6 +41,7 @@
Scraped
True
+ inventory
@@ -85,8 +86,8 @@
+ Properties
+ -->
property_stock_supplier
@@ -115,8 +116,8 @@
+ Resource: stock.warehouse
+ -->