diff --git a/addons/account/account.py b/addons/account/account.py
index c11d7394100..75041705547 100644
--- a/addons/account/account.py
+++ b/addons/account/account.py
@@ -2146,8 +2146,8 @@ class account_model_line(osv.osv):
_description = "Account Model Entries"
_columns = {
'name': fields.char('Name', size=64, required=True),
- 'sequence': fields.integer('Sequence', required=True, help="The sequence field is used to order the resources from lower sequences to higher ones"),
- 'quantity': fields.float('Quantity', digits_compute=dp.get_precision('Account'), help="The optional quantity on entries"),
+ 'sequence': fields.integer('Sequence', required=True, help="The sequence field is used to order the resources from lower sequences to higher ones."),
+ 'quantity': fields.float('Quantity', digits_compute=dp.get_precision('Account'), help="The optional quantity on entries."),
'debit': fields.float('Debit', digits_compute=dp.get_precision('Account')),
'credit': fields.float('Credit', digits_compute=dp.get_precision('Account')),
'account_id': fields.many2one('account.account', 'Account', required=True, ondelete="cascade"),
@@ -2156,7 +2156,7 @@ class account_model_line(osv.osv):
'amount_currency': fields.float('Amount Currency', help="The amount expressed in an optional other currency."),
'currency_id': fields.many2one('res.currency', 'Currency'),
'partner_id': fields.many2one('res.partner', 'Partner'),
- 'date_maturity': fields.selection([('today','Date of the day'), ('partner','Partner Payment Term')], 'Maturity date', help="The maturity date of the generated entries for this model. You can choose between the creation date or the creation date of the entries plus the partner payment terms."),
+ 'date_maturity': fields.selection([('today','Date of the day'), ('partner','Partner Payment Term')], 'Maturity Date', help="The maturity date of the generated entries for this model. You can choose between the creation date or the creation date of the entries plus the partner payment terms."),
}
_order = 'sequence'
_sql_constraints = [
diff --git a/addons/account/account_view.xml b/addons/account/account_view.xml
index bab2f43060f..e0a355c35bf 100644
--- a/addons/account/account_view.xml
+++ b/addons/account/account_view.xml
@@ -454,7 +454,7 @@
-
+
diff --git a/addons/account/wizard/account_report_aged_partner_balance.py b/addons/account/wizard/account_report_aged_partner_balance.py
index 59784e6e15d..4e6c6dea752 100644
--- a/addons/account/wizard/account_report_aged_partner_balance.py
+++ b/addons/account/wizard/account_report_aged_partner_balance.py
@@ -31,7 +31,7 @@ class account_aged_trial_balance(osv.osv_memory):
_description = 'Account Aged Trial balance Report'
_columns = {
- 'period_length':fields.integer('Period length (days)', required=True),
+ 'period_length':fields.integer('Period Length (days)', required=True),
'direction_selection': fields.selection([('past','Past'),
('future','Future')],
'Analysis Direction', required=True),
diff --git a/addons/account/wizard/account_report_common.py b/addons/account/wizard/account_report_common.py
index 7a8a0365208..42153c096e6 100644
--- a/addons/account/wizard/account_report_common.py
+++ b/addons/account/wizard/account_report_common.py
@@ -30,11 +30,11 @@ class account_common_report(osv.osv_memory):
_description = "Account Common Report"
_columns = {
- 'chart_account_id': fields.many2one('account.account', 'Chart of account', help='Select Charts of Accounts', required=True, domain = [('parent_id','=',False)]),
- 'fiscalyear_id': fields.many2one('account.fiscalyear', 'Fiscal year', help='Keep empty for all open fiscal year'),
+ 'chart_account_id': fields.many2one('account.account', 'Chart of Account', help='Select Charts of Accounts', required=True, domain = [('parent_id','=',False)]),
+ 'fiscalyear_id': fields.many2one('account.fiscalyear', 'Fiscal Year', help='Keep empty for all open fiscal year'),
'filter': fields.selection([('filter_no', 'No Filters'), ('filter_date', 'Date'), ('filter_period', 'Periods')], "Filter by", required=True),
- 'period_from': fields.many2one('account.period', 'Start period'),
- 'period_to': fields.many2one('account.period', 'End period'),
+ 'period_from': fields.many2one('account.period', 'Start Period'),
+ 'period_to': fields.many2one('account.period', 'End Period'),
'journal_ids': fields.many2many('account.journal', 'account_common_journal_rel', 'account_id', 'journal_id', 'Journals', required=True),
'date_from': fields.date("Start Date"),
'date_to': fields.date("End Date"),
diff --git a/addons/account/wizard/account_report_common_account.py b/addons/account/wizard/account_report_common_account.py
index 7205a9e53bf..0040d563bdd 100644
--- a/addons/account/wizard/account_report_common_account.py
+++ b/addons/account/wizard/account_report_common_account.py
@@ -28,7 +28,7 @@ class account_common_account_report(osv.osv_memory):
_columns = {
'display_account': fields.selection([('bal_all','All'), ('bal_movement','With movements'),
('bal_solde','With balance is not equal to 0'),
- ],'Display accounts', required=True),
+ ],'Display Accounts', required=True),
}
_defaults = {
diff --git a/addons/account/wizard/account_report_general_ledger.py b/addons/account/wizard/account_report_general_ledger.py
index c08894bfadd..1e17a66dd85 100644
--- a/addons/account/wizard/account_report_general_ledger.py
+++ b/addons/account/wizard/account_report_general_ledger.py
@@ -28,10 +28,10 @@ class account_report_general_ledger(osv.osv_memory):
_columns = {
'landscape': fields.boolean("Landscape Mode"),
- 'initial_balance': fields.boolean("Include initial balances",
+ 'initial_balance': fields.boolean("Include Initial Balances",
help='It adds initial balance row on report which display previous sum amount of debit/credit/balance'),
'amount_currency': fields.boolean("With Currency", help="It adds the currency column if the currency is different then the company currency"),
- 'sortby': fields.selection([('sort_date', 'Date'), ('sort_journal_partner', 'Journal & Partner')], 'Sort By', required=True),
+ 'sortby': fields.selection([('sort_date', 'Date'), ('sort_journal_partner', 'Journal & Partner')], 'Sort by', required=True),
}
_defaults = {
'landscape': True,
diff --git a/addons/account/wizard/account_report_partner_ledger.py b/addons/account/wizard/account_report_partner_ledger.py
index 1a09a6344f4..590ba80bd02 100644
--- a/addons/account/wizard/account_report_partner_ledger.py
+++ b/addons/account/wizard/account_report_partner_ledger.py
@@ -30,10 +30,10 @@ class account_partner_ledger(osv.osv_memory):
_description = 'Account Partner Ledger'
_columns = {
- 'initial_balance': fields.boolean('Include initial balances',
+ 'initial_balance': fields.boolean('Include Initial Balances',
help='It adds initial balance row on report which display previous sum amount of debit/credit/balance'),
'reconcil': fields.boolean('Include Reconciled Entries', help='Consider reconciled entries'),
- 'page_split': fields.boolean('One Partner Per Page', help='Display Ledger Report with One partner per page'),
+ 'page_split': fields.boolean('One Partner per Page', help='Display Ledger Report with One partner per page'),
'amount_currency': fields.boolean("With Currency", help="It adds the currency column if the currency is different then the company currency"),
}
diff --git a/addons/account/wizard/account_report_print_journal.py b/addons/account/wizard/account_report_print_journal.py
index b1ca30dc560..f4a5fcaf9f9 100644
--- a/addons/account/wizard/account_report_print_journal.py
+++ b/addons/account/wizard/account_report_print_journal.py
@@ -29,7 +29,7 @@ class account_print_journal(osv.osv_memory):
_columns = {
'sort_selection': fields.selection([('date', 'Date'),
('ref', 'Reference Number'),],
- 'Entries Sorted By', required=True),
+ 'Entries Sorted by', required=True),
}
_defaults = {
'sort_selection': 'date',
diff --git a/addons/account/wizard/account_vat.py b/addons/account/wizard/account_vat.py
index 3aecfb04a30..186f79cad6d 100644
--- a/addons/account/wizard/account_vat.py
+++ b/addons/account/wizard/account_vat.py
@@ -28,7 +28,7 @@ class account_vat_declaration(osv.osv_memory):
_columns = {
'based_on': fields.selection([('invoices', 'Invoices'),
('payments', 'Payments'),],
- 'Based On', required=True),
+ 'Based on', required=True),
'chart_tax_id': fields.many2one('account.tax.code', 'Chart of Tax', help='Select Charts of Taxes', required=True, domain = [('parent_id','=', False)]),
}
diff --git a/addons/account_budget/report/budget_report.py b/addons/account_budget/report/budget_report.py
index 8b98b067bb3..7681f9268d9 100644
--- a/addons/account_budget/report/budget_report.py
+++ b/addons/account_budget/report/budget_report.py
@@ -67,6 +67,8 @@ class budget_report(report_sxw.rml_parse):
context = {'wizard_date_from': d_from, 'wizard_date_to': d_to}
for i in range(0, len(an_ids)):
+ if not an_ids[i][0]:
+ continue
analytic_name = acc_analytic_obj.browse(self.cr, self.uid, [an_ids[i][0]])
res={
'b_id': '-1',
diff --git a/addons/account_budget/report/crossovered_budget_report.py b/addons/account_budget/report/crossovered_budget_report.py
index 8a3b745e32a..b70b7da34bb 100644
--- a/addons/account_budget/report/crossovered_budget_report.py
+++ b/addons/account_budget/report/crossovered_budget_report.py
@@ -72,6 +72,8 @@ class budget_report(report_sxw.rml_parse):
context = {'wizard_date_from': d_from, 'wizard_date_to': d_to}
for i in range(0, len(an_ids)):
+ if not an_ids[i][0]:
+ continue
analytic_name = acc_analytic_obj.browse(self.cr, self.uid, [an_ids[i][0]])
res={
'b_id': '-1',
diff --git a/addons/account_payment/account_payment.py b/addons/account_payment/account_payment.py
index a6699d9af04..5eadb0049b0 100644
--- a/addons/account_payment/account_payment.py
+++ b/addons/account_payment/account_payment.py
@@ -338,7 +338,7 @@ class payment_line(osv.osv):
required=True, help='Payment amount in the partner currency'),
'currency': fields.many2one('res.currency','Partner Currency', required=True),
'company_currency': fields.many2one('res.currency', 'Company Currency', readonly=True),
- 'bank_id': fields.many2one('res.partner.bank', 'Destination Bank account'),
+ 'bank_id': fields.many2one('res.partner.bank', 'Destination Bank Account'),
'order_id': fields.many2one('payment.order', 'Order', required=True,
ondelete='cascade', select=True),
'partner_id': fields.many2one('res.partner', string="Partner", required=True, help='The Ordering Customer'),
diff --git a/addons/account_voucher/account_voucher.py b/addons/account_voucher/account_voucher.py
index 9bfee8b8d49..b4422cd8051 100644
--- a/addons/account_voucher/account_voucher.py
+++ b/addons/account_voucher/account_voucher.py
@@ -379,6 +379,8 @@ class account_voucher(osv.osv):
account_id = partner.property_account_payable.id
tr_type = 'purchase'
else:
+ if not journal.default_credit_account_id or not journal.default_debit_account_id:
+ raise osv.except_osv(_('Error !'), _('Please define default credit/debit account on the %s !') % (journal.name))
account_id = journal.default_credit_account_id.id or journal.default_debit_account_id.id
tr_type = 'receipt'
diff --git a/addons/base_calendar/base_calendar.py b/addons/base_calendar/base_calendar.py
index 9693a0d5c0f..095a1654991 100644
--- a/addons/base_calendar/base_calendar.py
+++ b/addons/base_calendar/base_calendar.py
@@ -1296,7 +1296,7 @@ e.g.: Every other month on the last Sunday of the month for 10 occurrences:\
if name == "UNTIL":
is_until = True
value = parser.parse(value)
- rrule_until_date = parser.parse(value.strftime("%Y-%m-%d"))
+ rrule_until_date = parser.parse(value.strftime("%Y-%m-%d %H:%M:%S"))
if until_date and until_date >= rrule_until_date:
until_date = rrule_until_date
if until_date:
diff --git a/addons/base_calendar/wizard/base_calendar_invite_attendee.py b/addons/base_calendar/wizard/base_calendar_invite_attendee.py
index ea4d5aca85f..7d5b26026b5 100644
--- a/addons/base_calendar/wizard/base_calendar_invite_attendee.py
+++ b/addons/base_calendar/wizard/base_calendar_invite_attendee.py
@@ -140,7 +140,7 @@ send an Email to Invited Person')
if not mail_to:
name = map(lambda x: x[1], filter(lambda x: type==x[0], \
self._columns['type'].selection))
- raise osv.except_osv(_('Error!'), ("%s must have an email Address to send mail") %(name[0]))
+ raise osv.except_osv(_('Error!'), _("%s must have an email address to send mail") %(name[0]))
att_obj._send_mail(cr, uid, attendees, mail_to, \
email_from = current_user.user_email or tools.config.get('email_from', False))
diff --git a/addons/base_module_doc_rst/report/report_proximity_graph.py b/addons/base_module_doc_rst/report/report_proximity_graph.py
index 2d3704fd5b7..d14d709f501 100644
--- a/addons/base_module_doc_rst/report/report_proximity_graph.py
+++ b/addons/base_module_doc_rst/report/report_proximity_graph.py
@@ -48,7 +48,7 @@ class report_graph(report.interface.report_int):
if id:
get_dpend_module(id[0].id)
get_dpend_module(module_id)
- graph = pydot.Dot(graph_type='digraph',fontsize='10', label="\\nProximity Graph. \\n\\nGray Color:Official Modules, Red Color:Extra Addons Modules, Blue Color:Community Modules, Purple Color:Unknow Modules"
+ graph = pydot.Dot(graph_type='digraph',fontsize='10', label="\\nProximity Graph. \\n\\nGray Color-Official Modules, Red Color-Extra Addons Modules, Blue Color-Community Modules, Purple Color-Unknow Modules"
, center='1')
for node in nodes:
if node[1] == "official":
diff --git a/addons/caldav/wizard/caldav_browse_view.xml b/addons/caldav/wizard/caldav_browse_view.xml
index 0a7e6269fe2..53af6029883 100644
--- a/addons/caldav/wizard/caldav_browse_view.xml
+++ b/addons/caldav/wizard/caldav_browse_view.xml
@@ -15,8 +15,10 @@
-
-
+
+
+
+
diff --git a/addons/crm/crm_lead.py b/addons/crm/crm_lead.py
index fb3a8f5e223..864e4dfc0a4 100644
--- a/addons/crm/crm_lead.py
+++ b/addons/crm/crm_lead.py
@@ -329,6 +329,13 @@ class crm_lead(crm_case, osv.osv):
self.write(cr, uid, ids, data)
return stage
+ def unlink(self, cr, uid, ids, context=None):
+ for lead in self.browse(cr, uid, ids, context):
+ if (not lead.section_id.allow_unlink) and (lead.state <> 'draft'):
+ raise osv.except_osv(_('Warning !'),
+ _('You can not delete this lead. You should better cancel it.'))
+ return super(crm_lead, self).unlink(cr, uid, ids, context)
+
def message_new(self, cr, uid, msg, context=None):
"""
Automatically calls when new email message arrives
diff --git a/addons/crm/crm_meeting_view.xml b/addons/crm/crm_meeting_view.xml
index aba69889f57..baa022a7d39 100644
--- a/addons/crm/crm_meeting_view.xml
+++ b/addons/crm/crm_meeting_view.xml
@@ -44,7 +44,7 @@
-
+
@@ -102,7 +102,7 @@
-
+
-
+
diff --git a/addons/crm/crm_view.xml b/addons/crm/crm_view.xml
index 685019a3001..cc9005d69bf 100644
--- a/addons/crm/crm_view.xml
+++ b/addons/crm/crm_view.xml
@@ -3,7 +3,7 @@
+ groups="base.group_sale_manager,base.group_sale_salesman"/>
diff --git a/addons/crm/wizard/crm_lead_to_opportunity.py b/addons/crm/wizard/crm_lead_to_opportunity.py
index 33ec426d7d6..4b6e047f475 100644
--- a/addons/crm/wizard/crm_lead_to_opportunity.py
+++ b/addons/crm/wizard/crm_lead_to_opportunity.py
@@ -105,7 +105,7 @@ class crm_lead2opportunity_partner(osv.osv_memory):
for lead in lead_obj.browse(cr, uid, context.get('active_ids', []), context=context):
if lead.state in ['done', 'cancel']:
- raise osv.except_osv(_("Warning !"), _("Closed/Cancelled Leads Could not convert into Opportunity"))
+ raise osv.except_osv(_("Warning !"), _("Closed/Cancelled Leads can not be converted into Opportunity"))
return False
def _convert(self, cr, uid, ids, lead, partner_id, stage_ids, context=None):
diff --git a/addons/crm/wizard/crm_opportunity_to_phonecall_view.xml b/addons/crm/wizard/crm_opportunity_to_phonecall_view.xml
index 23ddaad5bfe..9a623d2eaab 100644
--- a/addons/crm/wizard/crm_opportunity_to_phonecall_view.xml
+++ b/addons/crm/wizard/crm_opportunity_to_phonecall_view.xml
@@ -16,7 +16,7 @@
-
+
diff --git a/addons/crm/wizard/crm_partner_to_opportunity_view.xml b/addons/crm/wizard/crm_partner_to_opportunity_view.xml
index 7ceb9bc40d9..762303f06ba 100644
--- a/addons/crm/wizard/crm_partner_to_opportunity_view.xml
+++ b/addons/crm/wizard/crm_partner_to_opportunity_view.xml
@@ -8,7 +8,7 @@
crm.partner2opportunity
form
-
diff --git a/addons/hr_evaluation/hr_evaluation_view.xml b/addons/hr_evaluation/hr_evaluation_view.xml
index 27b3ba53d10..46d5cf55a98 100644
--- a/addons/hr_evaluation/hr_evaluation_view.xml
+++ b/addons/hr_evaluation/hr_evaluation_view.xml
@@ -252,7 +252,7 @@
-
+
0 )", "The number of days must be greater than 0 !"),
- ('date_check2', "CHECK ( (type='add') OR (date_from < date_to))", "The start date must be before the end date !")
+ ('date_check2', "CHECK ( (type='add') OR (date_from <= date_to))", "The start date must be before the end date !"),
+ ('date_check', "CHECK ( number_of_days_temp >= 0 )", "The number of days must be greater than 0 !"),
]
def _create_resource_leave(self, cr, uid, vals, context=None):
@@ -217,6 +219,7 @@ class hr_holidays(osv.osv):
})
wf_service = netsvc.LocalService("workflow")
for id in ids:
+ wf_service.trg_delete(uid, 'hr.holidays', id, cr)
wf_service.trg_create(uid, 'hr.holidays', id, cr)
return True
diff --git a/addons/hr_holidays/hr_holidays_view.xml b/addons/hr_holidays/hr_holidays_view.xml
index f49b2ab388a..2e5e9b97771 100644
--- a/addons/hr_holidays/hr_holidays_view.xml
+++ b/addons/hr_holidays/hr_holidays_view.xml
@@ -93,7 +93,7 @@
-
+
diff --git a/addons/hr_recruitment/hr_recruitment_view.xml b/addons/hr_recruitment/hr_recruitment_view.xml
index ee7c9d6100c..a9a05a410c6 100644
--- a/addons/hr_recruitment/hr_recruitment_view.xml
+++ b/addons/hr_recruitment/hr_recruitment_view.xml
@@ -97,15 +97,15 @@
-
+
+ icon="gtk-index" type="action" attrs="{'readonly':['!',('partner_id','!=',False),('state','not in','done')]}" groups="base.group_partner_manager"/>
-
-
-
-
+
+
+
+
@@ -130,10 +130,10 @@
-
+
-
+
diff --git a/addons/idea/idea.py b/addons/idea/idea.py
index deda3ab1350..04ae4dff5df 100644
--- a/addons/idea/idea.py
+++ b/addons/idea/idea.py
@@ -31,11 +31,28 @@ DefaultVoteValue = '50'
class idea_category(osv.osv):
""" Category of Idea """
+ def name_get(self, cr, uid, ids, context=None):
+ if not len(ids):
+ return []
+ reads = self.read(cr, uid, ids, ['name','parent_id'], context=context)
+ res = []
+ for record in reads:
+ name = record['name']
+ if record['parent_id']:
+ name = record['parent_id'][1]+' / '+name
+ res.append((record['id'], name))
+ return res
+
+ def _categ_name_get_fnc(self, cr, uid, ids, prop, unknow_none, context=None):
+ res = self.name_get(cr, uid, ids, context=context)
+ return dict(res)
+
_name = "idea.category"
_description = "Idea Category"
_columns = {
'name': fields.char('Category', size=64, required=True),
+ 'complete_name': fields.function(_categ_name_get_fnc, method=True, type="char", string='Name'),
'summary': fields.text('Summary'),
'parent_id': fields.many2one('idea.category', 'Parent Categories', ondelete='set null'),
'child_ids': fields.one2many('idea.category', 'parent_id', 'Child Categories'),
@@ -46,6 +63,10 @@ class idea_category(osv.osv):
]
_order = 'parent_id,name asc'
+ _constraints = [
+ (osv.osv._check_recursion, 'Error ! You can not create recursive categories.', ['parent_id'])
+ ]
+
idea_category()
class idea_idea(osv.osv):
diff --git a/addons/idea/idea_view.xml b/addons/idea/idea_view.xml
index 493fda2c01f..e4cfa4efbe7 100644
--- a/addons/idea/idea_view.xml
+++ b/addons/idea/idea_view.xml
@@ -46,7 +46,7 @@
child_ids
-
+
@@ -234,11 +234,11 @@
-
+
-
+
diff --git a/addons/point_of_sale/point_of_sale.py b/addons/point_of_sale/point_of_sale.py
index a2123cb287c..4eeb7b2dd9f 100644
--- a/addons/point_of_sale/point_of_sale.py
+++ b/addons/point_of_sale/point_of_sale.py
@@ -267,7 +267,7 @@ class pos_order(osv.osv):
'lines': fields.one2many('pos.order.line', 'order_id', 'Order Lines', states={'draft': [('readonly', False)]}, readonly=True),
'price_type': fields.selection([
('tax_excluded','Tax excluded')],
- 'Price method', required=True),
+ 'Price Method', required=True),
'statement_ids': fields.one2many('account.bank.statement.line', 'pos_statement_id', 'Payments', states={'draft': [('readonly', False)]}, readonly=True),
'pricelist_id': fields.many2one('product.pricelist', 'Pricelist', required=True, states={'draft': [('readonly', False)]}, readonly=True),
'partner_id': fields.many2one('res.partner', 'Customer', change_default=True, select=1, states={'draft': [('readonly', False)], 'paid': [('readonly', False)]}),
@@ -426,12 +426,15 @@ class pos_order(osv.osv):
move_obj = self.pool.get('stock.move')
pick_name = self.pool.get('ir.sequence').get(cr, uid, 'stock.picking.out')
orders = self.browse(cr, uid, ids, context=context)
+ partner_obj = self.pool.get('res.partner')
for order in orders:
+ addr = order.partner_id and partner_obj.address_get(cr, uid, [order.partner_id.id], ['delivery']) or {}
if not order.picking_id:
new = True
picking_id = picking_obj.create(cr, uid, {
'name': pick_name,
'origin': order.name,
+ 'address_id': addr.get('delivery',False),
'type': 'out',
'state': 'draft',
'move_type': 'direct',
diff --git a/addons/point_of_sale/wizard/pos_box_out.py b/addons/point_of_sale/wizard/pos_box_out.py
index a05c5f579e1..74f1a968bc7 100644
--- a/addons/point_of_sale/wizard/pos_box_out.py
+++ b/addons/point_of_sale/wizard/pos_box_out.py
@@ -72,8 +72,7 @@ class pos_box_out(osv.osv_memory):
vals = {}
statement_obj = self.pool.get('account.bank.statement')
statement_line_obj = self.pool.get('account.bank.statement.line')
- product_obj = self.pool.get('product.template')
- productp_obj = self.pool.get('product.product')
+ product_obj = self.pool.get('product.product')
res_obj = self.pool.get('res.users')
for data in self.read(cr, uid, ids, context=context):
curr_company = res_obj.browse(cr, uid, uid, context=context).company_id.id
@@ -84,8 +83,8 @@ class pos_box_out(osv.osv_memory):
stat_done = statement_obj.browse(cr, uid, done_statmt, context=context)
address_u = res_obj.browse(cr, uid, uid, context=context).address_id
am = 0.0
-
- amount_check = productp_obj.browse(cr, uid, data['product_id'], context=context).am_out or False
+ product = product_obj.browse(cr, uid, data['product_id'], context=context)
+ amount_check = product.am_out or False
for st in stat_done:
for s in st.line_ids:
if address_u and s.partner_id == address_u.partner_id and s.am_out:
@@ -94,9 +93,9 @@ class pos_box_out(osv.osv_memory):
val = (res_obj.browse(cr, uid, uid).company_id.max_diff or 0.0) + am
raise osv.except_osv(_('Error !'), _('The maximum value you can still withdraw is exceeded. \n Remaining value is equal to %d ')%(val))
- acc_id = product_obj.browse(cr, uid, data['product_id'], context=context).property_account_income
+ acc_id = product.property_account_income
if not acc_id:
- raise osv.except_osv(_('Error !'), _('please check that account is set to %s')%(product_obj.browse(cr, uid, data['product_id'], context=context).name))
+ raise osv.except_osv(_('Error !'), _('please check that account is set to %s')%(product.name))
if not statement_id:
raise osv.except_osv(_('Error !'), _('You have to open at least one cashbox'))
if statement_id:
@@ -116,10 +115,10 @@ class pos_box_out(osv.osv_memory):
if data['amount'] > 0:
amount = -data['amount']
vals['amount'] = amount
- if productp_obj.browse(cr, uid, data['product_id'], context=context).am_out:
+ if product.am_out:
vals['am_out'] = True
vals['ref'] = data['ref'] or ''
- vals['name'] = "%s: %s " % (product_obj.browse(cr, uid, data['product_id'], context=context).name, data['name'].decode('utf8'))
+ vals['name'] = "%s: %s " % (product.name, data['name'])
address_u = res_obj.browse(cr, uid, uid, context=context).address_id
if address_u:
vals['partner_id'] = address_u.partner_id and address_u.partner_id.id or None
diff --git a/addons/procurement/procurement.py b/addons/procurement/procurement.py
index 3257f0a5694..1f808f2bef6 100644
--- a/addons/procurement/procurement.py
+++ b/addons/procurement/procurement.py
@@ -512,13 +512,13 @@ class stock_warehouse_orderpoint(osv.osv):
'product_id': fields.many2one('product.product', 'Product', required=True, ondelete='cascade', domain=[('type','=','product')]),
'product_uom': fields.many2one('product.uom', 'Product UOM', required=True),
'product_min_qty': fields.float('Min Quantity', required=True,
- help="When the virtual stock goes belong the Min Quantity, OpenERP generates "\
+ help="When the virtual stock goes below the Min Quantity specified for this field, OpenERP generates "\
"a procurement to bring the virtual stock to the Max Quantity."),
'product_max_qty': fields.float('Max Quantity', required=True,
- help="When the virtual stock goes belong the Max Quantity, OpenERP generates "\
- "a procurement to bring the virtual stock to the Max Quantity."),
+ help="When the virtual stock goes below the Min Quantity, OpenERP generates "\
+ "a procurement to bring the virtual stock to the Quantity specified as Max Quantity."),
'qty_multiple': fields.integer('Qty Multiple', required=True,
- help="The procurement quantity will by rounded up to this multiple."),
+ help="The procurement quantity will be rounded up to this multiple."),
'procurement_id': fields.many2one('procurement.order', 'Latest procurement', ondelete="set null"),
'company_id': fields.many2one('res.company','Company',required=True),
'procurement_draft_ids': fields.function(_get_draft_procurements, method=True, type='many2many', relation="procurement.order", \
diff --git a/addons/project_gtd/wizard/project_gtd_empty_view.xml b/addons/project_gtd/wizard/project_gtd_empty_view.xml
index b39391728a4..b7ebeb1bd00 100644
--- a/addons/project_gtd/wizard/project_gtd_empty_view.xml
+++ b/addons/project_gtd/wizard/project_gtd_empty_view.xml
@@ -10,9 +10,10 @@
diff --git a/addons/project_gtd/wizard/project_gtd_fill_view.xml b/addons/project_gtd/wizard/project_gtd_fill_view.xml
index 6206a0a5d89..41b99eb1b1e 100644
--- a/addons/project_gtd/wizard/project_gtd_fill_view.xml
+++ b/addons/project_gtd/wizard/project_gtd_fill_view.xml
@@ -11,6 +11,7 @@
+
diff --git a/addons/project_scrum/project_scrum_view.xml b/addons/project_scrum/project_scrum_view.xml
index 82c19c09238..99b74157466 100644
--- a/addons/project_scrum/project_scrum_view.xml
+++ b/addons/project_scrum/project_scrum_view.xml
@@ -63,7 +63,7 @@
+ icon="gtk-convert" attrs="{'invisible':[('state','in',['done', 'cancel'])]}"/>
diff --git a/addons/resource/resource_view.xml b/addons/resource/resource_view.xml
index 7663a5af5d4..424955d0584 100644
--- a/addons/resource/resource_view.xml
+++ b/addons/resource/resource_view.xml
@@ -225,7 +225,7 @@
-
+
diff --git a/addons/sale/sale.py b/addons/sale/sale.py
index f80d610eb03..98e186d56a3 100644
--- a/addons/sale/sale.py
+++ b/addons/sale/sale.py
@@ -1180,12 +1180,14 @@ class sale_config_picking_policy(osv.osv_memory):
'picking_policy': fields.selection([
('direct', 'Direct Delivery'),
('one', 'All at Once')
- ], 'Picking Default Policy', required=True, help="The Shipping Policy is used to configure per order if you want to deliver as soon as possible when one product is available or you wait that all products are available.."),
+ ], 'Picking Default Policy', required=True, help="If you are sure that you have enough stock to send complete order at once please select 'All at Once'. If you want to send the order in the partial shipments please select 'Direct Delivery'..."),
'order_policy': fields.selection([
('manual', 'Invoice Based on Sales Orders'),
('picking', 'Invoice Based on Deliveries'),
], 'Shipping Default Policy', required=True,
- help="You can generate invoices based on sales orders or based on shippings."),
+ help="""The Shipping Policy is used to synchronise invoice and delivery operations.
+ - The "Invoice Based on Sales Orders" option will create the picking order directly and wait for the user to manually click on the 'Invoice' button to generate the draft invoice.
+ - The "Invoice Based on Deliveries" option is used to create an invoice during the picking process."""),
'step': fields.selection([
('one', 'Delivery Order Only'),
('two', 'Picking List & Delivery Order')
diff --git a/addons/stock/security/ir.model.access.csv b/addons/stock/security/ir.model.access.csv
index 8c7c53ed8ba..68a210e535d 100644
--- a/addons/stock/security/ir.model.access.csv
+++ b/addons/stock/security/ir.model.access.csv
@@ -3,6 +3,7 @@
"access_stock_incoterms_manager","stock.incoterms manager","model_stock_incoterms","stock.group_stock_manager",1,1,1,1
"access_stock_warehouse_manager","stock.warehouse.manager","model_stock_warehouse","stock.group_stock_manager",1,1,1,1
"access_stock_warehouse_user","stock.warehouse.user","model_stock_warehouse","base.group_user",1,0,0,0
+"access_stock_location__partner_manager","stock.location.partner.manager","model_stock_location","base.group_partner_manager",1,1,1,1
"access_stock_location_manager","stock.location.manager","model_stock_location","stock.group_stock_manager",1,1,1,1
"access_stock_location_user","stock.location.user","model_stock_location","base.group_user",1,0,0,0
"access_stock_journal_user","stock.journal.user","model_stock_journal","base.group_user",1,0,0,0