[MERGE] forward port branch 10.0 up to 58c70226b7
This commit is contained in:
@@ -51,6 +51,13 @@
|
||||
]
|
||||
</field>
|
||||
</record>
|
||||
<record model="ir.rule" id="event_registration_portal">
|
||||
<field name="name">Event/Registration: Portal</field>
|
||||
<field name="model_id" ref="model_event_registration"/>
|
||||
<field name="groups" eval="[(4, ref('base.group_portal'))]"/>
|
||||
<field name="domain_force">['|', ('email', '=', user.partner_id.email), ('partner_id', '=', user.partner_id.id)]
|
||||
</field>
|
||||
</record>
|
||||
|
||||
</data>
|
||||
</odoo>
|
||||
|
||||
@@ -5,9 +5,10 @@ access_event_event_portal,event.event.portal,model_event_event,,1,0,0,0
|
||||
access_event_event_user,event.event.user,model_event_event,event.group_event_user,1,0,0,0
|
||||
access_event_event_manager,event.event.manager,model_event_event,event.group_event_manager,1,1,1,1
|
||||
access_event_registration,event.registration,model_event_registration,event.group_event_user,1,1,1,1
|
||||
access_event_registration_portal,event.registration,model_event_registration,,0,0,0,0
|
||||
access_report_event_registration,report.event.registration,model_report_event_registration,event.group_event_user,1,1,1,1
|
||||
access_event_registration_portal,event.registration,model_event_registration,base.group_portal,1,0,0,0
|
||||
access_event_registration_employee,event.registration,model_event_registration,base.group_user,1,0,0,0
|
||||
access_event_mail,event.mail,model_event_mail,event.group_event_user,1,0,0,0
|
||||
access_event_mail_manager,event.mail manager,model_event_mail,event.group_event_manager,1,1,1,1
|
||||
access_event_mail_registration,event.mail.registration,model_event_mail_registration,event.group_event_user,1,0,0,0
|
||||
access_event_mail_registration_manager,event.mail.registration.manager,model_event_mail_registration,event.group_event_manager,1,1,1,1
|
||||
access_report_event_registration,report.event.registration,model_report_event_registration,event.group_event_user,1,1,1,1
|
||||
access_event_mail_registration_manager,event.mail.registration.manager,model_event_mail_registration,event.group_event_manager,1,1,1,1
|
||||
|
@@ -26,6 +26,7 @@ this event.
|
||||
'data/event_sale_data.xml',
|
||||
'report/event_event_templates.xml',
|
||||
'security/ir.model.access.csv',
|
||||
'security/event_security.xml',
|
||||
'wizard/event_edit_registration.xml',
|
||||
],
|
||||
'demo': ['data/event_demo.xml'],
|
||||
|
||||
@@ -0,0 +1,8 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<openerp>
|
||||
<data noupdate="0">
|
||||
<record id="sales_team.group_sale_salesman" model="res.groups">
|
||||
<field name="implied_ids" eval="[(4, ref('event.group_event_user'))]"/>
|
||||
</record>
|
||||
</data>
|
||||
</openerp>
|
||||
@@ -14,7 +14,7 @@
|
||||
<th class="text-right">Unit Price</th>
|
||||
<th t-if="display_discount" class="text-right" groups="sale.group_discount_per_so_line">Disc.(%)</th>
|
||||
<th class="text-right">Taxes</th>
|
||||
<th class="text-right" groups="sale.group_show_price_subtotal">Price</th>
|
||||
<th class="text-right">Amount</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody class="invoice_tbody">
|
||||
@@ -45,7 +45,7 @@
|
||||
<td class="text-right">
|
||||
<span t-esc="', '.join(map(lambda x: x.description or x.name, l.invoice_line_tax_ids))"/>
|
||||
</td>
|
||||
<td class="text-right" groups="sale.group_show_price_subtotal">
|
||||
<td class="text-right">
|
||||
<span t-field="l.price_subtotal"
|
||||
t-options='{"widget": "monetary", "display_currency": o.currency_id}'/>
|
||||
</td>
|
||||
|
||||
@@ -108,13 +108,9 @@ class SaleOrderLine(models.Model):
|
||||
@api.multi
|
||||
@api.depends('product_id')
|
||||
def _compute_qty_delivered_updateable(self):
|
||||
# prefetch field before filtering
|
||||
self.mapped('product_id')
|
||||
# on consumable or stockable products, qty_delivered_updateable defaults
|
||||
# to False; on other lines use the original computation
|
||||
lines = self.filtered(lambda line: line.product_id.type not in ('consu', 'product'))
|
||||
lines = lines.with_prefetch(self._prefetch)
|
||||
super(SaleOrderLine, lines)._compute_qty_delivered_updateable()
|
||||
for line in self:
|
||||
if line.product_id.type not in ('consu', 'product'):
|
||||
super(SaleOrderLine, line)._compute_qty_delivered_updateable()
|
||||
|
||||
@api.onchange('product_id')
|
||||
def _onchange_product_id_set_customer_lead(self):
|
||||
|
||||
@@ -52,7 +52,7 @@ class TestSaleStock(TestSale):
|
||||
pick_2 = self.so.picking_ids[0]
|
||||
pick_2.force_assign()
|
||||
pick_2.pack_operation_product_ids.write({'qty_done': 1})
|
||||
self.assertIsNone(pick_2.do_new_transfer(), 'Sale Stock: second picking should be final without need for a backorder')
|
||||
self.assertTrue(pick_2.do_new_transfer(), 'Sale Stock: second picking should be final without need for a backorder')
|
||||
self.assertEqual(self.so.invoice_status, 'to invoice', 'Sale Stock: so invoice_status should be "to invoice" after complete delivery')
|
||||
del_qties = [sol.qty_delivered for sol in self.so.order_line]
|
||||
del_qties_truth = [2.0 if sol.product_id.type in ['product', 'consu'] else 0.0 for sol in self.so.order_line]
|
||||
@@ -100,7 +100,7 @@ class TestSaleStock(TestSale):
|
||||
pick = self.so.picking_ids
|
||||
pick.force_assign()
|
||||
pick.pack_operation_product_ids.write({'qty_done': 2})
|
||||
self.assertIsNone(pick.do_new_transfer(), 'Sale Stock: complete delivery should not need a backorder')
|
||||
self.assertTrue(pick.do_new_transfer(), 'Sale Stock: complete delivery should not need a backorder')
|
||||
del_qties = [sol.qty_delivered for sol in self.so.order_line]
|
||||
del_qties_truth = [2.0 if sol.product_id.type in ['product', 'consu'] else 0.0 for sol in self.so.order_line]
|
||||
self.assertEqual(del_qties, del_qties_truth, 'Sale Stock: delivered quantities are wrong after partial delivery')
|
||||
|
||||
@@ -842,7 +842,7 @@ class Picking(models.Model):
|
||||
if pack_operations_delete:
|
||||
pack_operations_delete.unlink()
|
||||
self.do_transfer()
|
||||
return
|
||||
return True
|
||||
|
||||
def check_backorder(self):
|
||||
need_rereserve, all_op_processed = self.picking_recompute_remaining_quantities(done_qtys=True)
|
||||
|
||||
@@ -168,9 +168,7 @@
|
||||
|
||||
// Flex fields
|
||||
.o_form_field_many2one, .o_form_field_radio, .o_form_field_many2manytags, .o_form_field_percent_pie, .o_form_field_monetary, .o_form_field_binary_file {
|
||||
@media (min-width: @screen-sm-min) {
|
||||
.o-inline-flex-display();
|
||||
}
|
||||
> span, > button {
|
||||
.o-flex(0, 0, auto);
|
||||
}
|
||||
@@ -206,6 +204,9 @@
|
||||
|
||||
// Radio buttons
|
||||
.o_form_field_radio {
|
||||
@media (max-width: @screen-xs-max) {
|
||||
display: inline-block;
|
||||
}
|
||||
.o_radio_item {
|
||||
.o-flex(0, 0, auto);
|
||||
.o-flex-display();
|
||||
|
||||
@@ -169,7 +169,7 @@ class WebsiteEventController(http.Controller):
|
||||
'event': event,
|
||||
'main_object': event,
|
||||
'range': range,
|
||||
'registrable': event._is_event_registrable()
|
||||
'registrable': event.sudo()._is_event_registrable()
|
||||
}
|
||||
return request.render("website_event.event_description_full", values)
|
||||
|
||||
|
||||
@@ -458,7 +458,7 @@
|
||||
<t t-if="event.state != 'draft'">
|
||||
Event registration is closed.
|
||||
</t>
|
||||
<t t-if="uid">
|
||||
<t t-if="request.env.user.has_group('event.group_event_manager')">
|
||||
<i class="fa fa-plus-circle"><a t-attf-href="/web#id=#{event.id}&view_type=form&model=event.event"> <em>Configure and Launch Event Registration</em></a></i>
|
||||
</t>
|
||||
</div>
|
||||
|
||||
Reference in New Issue
Block a user