[ADD] Price in service lines

This commit is contained in:
Dario Lodeiros
2019-03-17 18:53:41 +01:00
parent 0cb4ed1f32
commit abf2bae3af
6 changed files with 53 additions and 7 deletions

View File

@@ -142,6 +142,7 @@ class HotelFolio(models.Model):
channel_type = fields.Selection([('door', 'Door'),
('mail', 'Mail'),
('phone', 'Phone'),
('call', 'Call Center'),
('web', 'Web')], 'Sales Channel', default='door')
user_id = fields.Many2one('res.users', string='Salesperson', index=True,
track_visibility='onchange', default=lambda self: self.env.user)

View File

@@ -78,6 +78,11 @@ class HotelReservation(models.Model):
else:
return default_departure_hour
@api.multi
def set_call_center_user(self):
user = self.env['res.users'].browse(self.env.uid)
return user.has_group('hotel.group_hotel_call')
@api.model
def _default_diff_invoicing(self):
"""
@@ -270,6 +275,7 @@ class HotelReservation(models.Model):
related='folio_id.internal_comment')
preconfirm = fields.Boolean('Auto confirm to Save', default=True)
to_send = fields.Boolean('To Send', default=True)
call_center = fields.Boolean(default='set_call_center_user')
has_confirmed_reservations_to_send = fields.Boolean(
related='folio_id.has_confirmed_reservations_to_send',
readonly=True)
@@ -352,6 +358,12 @@ class HotelReservation(models.Model):
if 'service_ids' in vals and vals['service_ids'][0][2]:
for service in vals['service_ids']:
service[2]['folio_id'] = folio.id
user = self.env['res.users'].browse(self.env.uid)
if user.has_group('hotel.group_hotel_call'):
vals.update({
'to_assign': True,
'channel_type': 'call'
})
vals.update({
'last_updated_res': fields.Datetime.now(),
})
@@ -427,10 +439,15 @@ class HotelReservation(models.Model):
persons=service.ser_room_line.adults,
old_line_days=service.service_line_ids
))
if ('checkin' in vals and record.checkin != vals['checkin']) or \
('checkout' in vals and record.checkout != vals['checkout']) or \
('state' in vals and record.state != vals['state']):
if ('checkin' in vals and record.checkin != vals['checkin']) or\
('checkout' in vals and record.checkout != vals['checkout']) or\
('state' in vals and record.state != vals['state']):
record.update({'to_send': True})
user = self.env['res.users'].browse(self.env.uid)
if user.has_group('hotel.group_hotel_call'):
vals.update({
'to_assign': True,
})
res = super(HotelReservation, self).write(vals)
return res
@@ -760,8 +777,11 @@ class HotelReservation(models.Model):
'''
_logger.info('confirm')
hotel_reserv_obj = self.env['hotel.reservation']
user = self.env['res.users'].browse(self.env.uid)
for record in self:
vals = {}
if user.has_group('hotel.group_hotel_call'):
vals.update({'channel_type': 'call'})
if record.checkin_partner_ids:
vals.update({'state': 'booking'})
else:

View File

@@ -4,7 +4,6 @@
from odoo import models, fields, api, _
from odoo.addons import decimal_precision as dp
from odoo.exceptions import ValidationError
from datetime import date
class HotelReservationLine(models.Model):
_name = "hotel.reservation.line"

View File

@@ -14,6 +14,26 @@ class HotelServiceLine(models.Model):
date = fields.Date('Date')
day_qty = fields.Integer('Units')
product_id = fields.Many2one(related='service_id.product_id', store=True)
price_total = fields.Float('Price Total',
compute='_compute_price_total',
store=True)
price_unit = fields.Float('Unit Price',
related="service_id.price_unit",
readonly=True,
store=True)
discount = fields.Float('Discount',
related="service_id.discount",
readonly=True,
store=True)
tax_ids = fields.Many2many('account.tax',
string='Taxes',
related="service_id.tax_ids",
readonly="True")
@api.depends('day_qty', 'service_id.price_total')
def _compute_price_total(self):
for record in self:
record.price_total = (record.service_id.price_total * record.day_qty) / record.service_id.product_qty
@api.constrains('day_qty')
def no_free_resources(self):

View File

@@ -13,6 +13,7 @@
<field name="product_id" />
<field name="day_qty"/>
<field name="date" />
<field name="price_unit" />
</group>
</form>
</field>
@@ -37,9 +38,13 @@
<field name="arch" type="xml">
<tree string="Service By Day">
<field name="product_id" />
<field name="day_qty"/>
<field name="date" />
<field name="day_qty"/>
<field name="price_unit" />
<field name="service_id" />
<field name="tax_ids" widget="many2many_tags"/>
<field name="discount" />
<field name="price_total" />
</tree>
</field>
</record>
@@ -96,7 +101,7 @@
res_model="hotel.service.line"
view_mode="tree,form"
view_id = "hotel.hotel_service_line_report_view_tree" />
<menuitem
id="menu_hotel_service_line"
name="Services by Day"

View File

@@ -85,7 +85,8 @@ class FolioWizard(models.TransientModel):
channel_type = fields.Selection([
('door', 'Door'),
('mail', 'Mail'),
('phone', 'Phone')
('phone', 'Phone'),
('call', 'Call')
], string='Sales Channel', default=_get_default_channel_type)
room_type_wizard_ids = fields.One2many('hotel.room.type.wizard',
'folio_wizard_id',