[MERGE] forward port branch 9.0 up to 8de514f805
This commit is contained in:
@@ -25,7 +25,7 @@ class ReportOverdue(models.AbstractModel):
|
|||||||
"FROM account_move_line l "
|
"FROM account_move_line l "
|
||||||
"JOIN account_account_type at ON (l.user_type_id = at.id) "
|
"JOIN account_account_type at ON (l.user_type_id = at.id) "
|
||||||
"JOIN account_move m ON (l.move_id = m.id) "
|
"JOIN account_move m ON (l.move_id = m.id) "
|
||||||
"WHERE l.partner_id IN %s AND at.type IN ('receivable', 'payable') GROUP BY l.date, l.name, l.ref, l.date_maturity, l.partner_id, at.type, l.blocked, l.amount_currency, l.currency_id, l.move_id, m.name", (((fields.date.today(), ) + (tuple(partner_ids),))))
|
"WHERE l.partner_id IN %s AND at.type IN ('receivable', 'payable') AND NOT l.reconciled GROUP BY l.date, l.name, l.ref, l.date_maturity, l.partner_id, at.type, l.blocked, l.amount_currency, l.currency_id, l.move_id, m.name", (((fields.date.today(), ) + (tuple(partner_ids),))))
|
||||||
for row in self.env.cr.dictfetchall():
|
for row in self.env.cr.dictfetchall():
|
||||||
res[row.pop('partner_id')].append(row)
|
res[row.pop('partner_id')].append(row)
|
||||||
return res
|
return res
|
||||||
|
|||||||
@@ -554,9 +554,12 @@ class MergePartnerAutomatic(osv.TransientModel):
|
|||||||
'min_id': min_id,
|
'min_id': min_id,
|
||||||
'aggr_ids': aggr_ids,
|
'aggr_ids': aggr_ids,
|
||||||
}
|
}
|
||||||
|
# To ensure that the used partners are accessible by the user
|
||||||
proxy.create(cr, uid, values, context=context)
|
partner_ids = self.pool['res.partner'].search(cr, uid, [('id', 'in', aggr_ids)], context=context)
|
||||||
counter += 1
|
if len(partner_ids) >= 2:
|
||||||
|
values['aggr_ids'] = partner_ids
|
||||||
|
proxy.create(cr, uid, values, context=context)
|
||||||
|
counter += 1
|
||||||
|
|
||||||
values = {
|
values = {
|
||||||
'state': 'selection',
|
'state': 'selection',
|
||||||
|
|||||||
@@ -65,14 +65,24 @@ class PosOrder(models.Model):
|
|||||||
closed_session.id,
|
closed_session.id,
|
||||||
order['name'],
|
order['name'],
|
||||||
order['amount_total'])
|
order['amount_total'])
|
||||||
_logger.warning('attempting to create recovery session for saving order %s', order['name'])
|
|
||||||
new_session = PosSession.create({
|
open_sessions = PosSession.search([('state', '=', 'opened'),
|
||||||
'config_id': closed_session.config_id.id,
|
('rescue', '=', True),
|
||||||
'name': _('(RESCUE FOR %(session)s)') % {'session': closed_session.name},
|
('config_id', '=', closed_session.config_id.id),
|
||||||
'rescue': True, # avoid conflict with live sessions
|
('name', 'ilike', closed_session.name)],
|
||||||
})
|
limit=1, order="start_at DESC")
|
||||||
# bypass opening_control (necessary when using cash control)
|
if open_sessions:
|
||||||
new_session.signal_workflow('open')
|
new_session = open_sessions[0]
|
||||||
|
_logger.warning('using existing recovery session %s for saving order %s', new_session, order['name'])
|
||||||
|
else:
|
||||||
|
_logger.warning('attempting to create recovery session for saving order %s', order['name'])
|
||||||
|
new_session = PosSession.create({
|
||||||
|
'config_id': closed_session.config_id.id,
|
||||||
|
'name': _('(RESCUE FOR %(session)s)') % {'session': closed_session.name},
|
||||||
|
'rescue': True, # avoid conflict with live sessions
|
||||||
|
})
|
||||||
|
# bypass opening_control (necessary when using cash control)
|
||||||
|
new_session.signal_workflow('open')
|
||||||
|
|
||||||
return new_session
|
return new_session
|
||||||
|
|
||||||
|
|||||||
@@ -636,8 +636,6 @@ class Database(http.Controller):
|
|||||||
@http.route('/web/database/create', type='http', auth="none", methods=['POST'], csrf=False)
|
@http.route('/web/database/create', type='http', auth="none", methods=['POST'], csrf=False)
|
||||||
def create(self, master_pwd, name, lang, password, **post):
|
def create(self, master_pwd, name, lang, password, **post):
|
||||||
try:
|
try:
|
||||||
if not re.match('^[a-zA-Z][a-zA-Z0-9_]+$', name):
|
|
||||||
raise Exception(_('Invalid database name. Only alphanumerical characters and underscore are allowed.'))
|
|
||||||
# country code could be = "False" which is actually True in python
|
# country code could be = "False" which is actually True in python
|
||||||
country_code = post.get('country_code') or False
|
country_code = post.get('country_code') or False
|
||||||
request.session.proxy("db").create_database(master_pwd, name, bool(post.get('demo')), lang, password, post['login'], country_code)
|
request.session.proxy("db").create_database(master_pwd, name, bool(post.get('demo')), lang, password, post['login'], country_code)
|
||||||
@@ -650,8 +648,6 @@ class Database(http.Controller):
|
|||||||
@http.route('/web/database/duplicate', type='http', auth="none", methods=['POST'], csrf=False)
|
@http.route('/web/database/duplicate', type='http', auth="none", methods=['POST'], csrf=False)
|
||||||
def duplicate(self, master_pwd, name, new_name):
|
def duplicate(self, master_pwd, name, new_name):
|
||||||
try:
|
try:
|
||||||
if not re.match('^[a-zA-Z][a-zA-Z0-9_]+$', new_name):
|
|
||||||
raise Exception(_('Invalid database name. Only alphanumerical characters and underscore are allowed.'))
|
|
||||||
request.session.proxy("db").duplicate_database(master_pwd, name, new_name)
|
request.session.proxy("db").duplicate_database(master_pwd, name, new_name)
|
||||||
return http.local_redirect('/web/database/manager')
|
return http.local_redirect('/web/database/manager')
|
||||||
except Exception, e:
|
except Exception, e:
|
||||||
|
|||||||
@@ -120,12 +120,15 @@ var QWeb2 = {
|
|||||||
}
|
}
|
||||||
return r.join('');
|
return r.join('');
|
||||||
} else {
|
} else {
|
||||||
|
// avoid XMLSerializer with text node for IE
|
||||||
|
if (node.nodeType == 3) {
|
||||||
|
return node.data;
|
||||||
|
}
|
||||||
if (typeof XMLSerializer !== 'undefined') {
|
if (typeof XMLSerializer !== 'undefined') {
|
||||||
return (new XMLSerializer()).serializeToString(node);
|
return (new XMLSerializer()).serializeToString(node);
|
||||||
} else {
|
} else {
|
||||||
switch(node.nodeType) {
|
switch(node.nodeType) {
|
||||||
case 1: return node.outerHTML;
|
case 1: return node.outerHTML;
|
||||||
case 3: return node.data;
|
|
||||||
case 4: return '<![CDATA[' + node.data + ']]>';
|
case 4: return '<![CDATA[' + node.data + ']]>';
|
||||||
case 8: return '<!-- ' + node.data + '-->';
|
case 8: return '<!-- ' + node.data + '-->';
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -61,7 +61,7 @@
|
|||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-md-12">
|
<div class="col-md-12">
|
||||||
<label for="name" class="control-label">Database Name</label>
|
<label for="name" class="control-label">Database Name</label>
|
||||||
<input id="name" type="text" name="name" class="form-control" required="required" autocomplete="off" pattern="^[a-zA-Z][a-zA-Z0-9_]+$" title="Only alphanumerical characters and underscore are allowed"/>
|
<input id="name" type="text" name="name" class="form-control" required="required" autocomplete="off"/>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -208,7 +208,7 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label for="name" class="control-label">Database Name</label>
|
<label for="name" class="control-label">Database Name</label>
|
||||||
<input id="name" type="text" name="name" class="form-control" required="required" pattern="^[a-zA-Z][a-zA-Z0-9_]+$" title="Only alphanumerical characters and underscore are allowed"/>
|
<input id="name" type="text" name="name" class="form-control" required="required"/>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label for="copy">This database might have been moved or copied.</label>
|
<label for="copy">This database might have been moved or copied.</label>
|
||||||
@@ -281,7 +281,7 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label for="new_name" class="control-label">New Name</label>
|
<label for="new_name" class="control-label">New Name</label>
|
||||||
<input id="new_name" type="text" name="new_name" class="form-control" required="required" pattern="^[a-zA-Z][a-zA-Z0-9_]+$" title="Only alphanumerical characters and underscore are allowed"/>
|
<input id="new_name" type="text" name="new_name" class="form-control" required="required"/>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="modal-footer">
|
<div class="modal-footer">
|
||||||
|
|||||||
@@ -168,7 +168,7 @@
|
|||||||
</record>
|
</record>
|
||||||
|
|
||||||
<record id="group_partner_manager" model="res.groups">
|
<record id="group_partner_manager" model="res.groups">
|
||||||
<field name="category_id" ref="module_category_extra"/>
|
<field name="category_id" ref="module_category_usability"/>
|
||||||
</record>
|
</record>
|
||||||
|
|
||||||
</data>
|
</data>
|
||||||
|
|||||||
Reference in New Issue
Block a user