[FIX] create services from reservation

This commit is contained in:
Dario Lodeiros
2019-01-17 12:04:15 +01:00
parent 59e2c1d657
commit 45ebbdc4a9
2 changed files with 16 additions and 4 deletions

View File

@@ -327,6 +327,9 @@ class HotelReservation(models.Model):
vals.update({'folio_id': folio.id,
'reservation_type': vals.get('reservation_type'),
'channel_type': vals.get('channel_type')})
if 'service_ids' in vals:
for service in vals['service_ids']:
service[2]['folio_id'] = folio.id
vals.update({
'last_updated_res': fields.Datetime.now(),
})
@@ -440,7 +443,7 @@ class HotelReservation(models.Model):
""" Deduce missing required fields from the onchange """
res = {}
onchange_fields = ['room_id', 'reservation_type',
'currency_id', 'name', 'board_service_room_id']
'currency_id', 'name', 'board_service_room_id','service_ids']
if values.get('room_type_id'):
line = self.new(values)
if any(f not in values for f in onchange_fields):

View File

@@ -46,6 +46,13 @@ class HotelService(models.Model):
return self.env.context.get('default_ser_room_line')
return False
@api.model
def _default_folio_id(self):
import wdb; wdb.set_trace()
if 'folio_id' in self._context:
return self._context['folio_id']
return False
@api.depends('qty_invoiced', 'product_qty', 'folio_id.state')
def _get_to_invoice_qty(self):
"""
@@ -114,7 +121,9 @@ class HotelService(models.Model):
name = fields.Char('Service description', required=True)
sequence = fields.Integer(string='Sequence', default=10)
product_id = fields.Many2one('product.product', 'Service', required=True)
folio_id = fields.Many2one('hotel.folio', 'Folio', ondelete='cascade')
folio_id = fields.Many2one('hotel.folio', 'Folio',
ondelete='cascade',
default=_default_folio_id)
ser_room_line = fields.Many2one('hotel.reservation', 'Room',
default=_default_ser_room_line)
per_day = fields.Boolean(related='product_id.per_day')
@@ -236,7 +245,7 @@ class HotelService(models.Model):
def _compute_tax_ids(self):
for record in self:
# If company_id is set, always filter taxes by the company
folio = record.folio_id or self.env.context.get('default_folio_id')
folio = record.folio_id or self.env['hotel.folio'].browse(self.env.context.get('default_folio_id'))
reservation = record.ser_room_line or self.env.context.get('ser_room_line')
origin = folio if folio else reservation
record.tax_ids = record.product_id.taxes_id.filtered(lambda r: not record.company_id or r.company_id == origin.company_id)
@@ -374,7 +383,7 @@ class HotelService(models.Model):
Compute the amounts of the service line.
"""
for record in self:
folio = record.folio_id or self.env.context.get('default_folio_id')
folio = record.folio_id or self.env['hotel.folio'].browse(self.env.context.get('default_folio_id'))
reservation = record.ser_room_line or self.env.context.get('ser_room_line')
currency = folio.currency_id if folio else reservation.currency_id
product = record.product_id