[WIP] Refactoring Cardex

This commit is contained in:
Pablo
2018-11-07 11:11:08 +01:00
parent 982c9b629b
commit 2071c04ac8
13 changed files with 279 additions and 279 deletions

View File

@@ -34,9 +34,9 @@ class Wizard(models.TransientModel):
# return current room line (onlyone in this case)
return reservations
for res in reservations:
# return the first room line with free space for a cardex
# return the first room line with free space for a checkin
# TODO: add 'done' to res.state condition... Maybe too restrictive right now
if res.cardex_count < (res.adults + res.children) and \
if res.checkin_partner_count < (res.adults + res.children) and \
res.state not in ["cancelled"]:
return res
elif 'reservation_id' in self.env.context:
@@ -50,14 +50,14 @@ class Wizard(models.TransientModel):
# no partner by default. User must search and choose one
return False
def default_cardex_ids(self):
def default_checkin_partner_ids(self):
if ('reservation_ids' and 'folio') in self.env.context:
ids = [item[1] for item in self.env.context.get('reservation_ids')]
reservations = self.env['hotel.reservation'].browse(ids)
for res in reservations:
return res.cardex_ids
return res.checkin_partner_ids
def default_cardex_ids(self):
def default_checkin_partner_ids(self):
if ('reservation_ids' and 'folio') in self.env.context:
ids = [item[1] for item in self.env.context.get('reservation_ids')]
reservations = self.env['hotel.reservation'].browse(ids)
@@ -65,38 +65,38 @@ class Wizard(models.TransientModel):
return res.segmentation_id
''' TODO: clean-up
def default_count_cardex(self):
def default_count_checkin_partner(self):
if 'reservation_ids' and 'folio' in self.env.context:
ids = [item[1] for item in self.env.context['reservation_ids']]
reservations = self.env['hotel.reservation'].browse(ids)
for res in reservations:
return res.cardex_count
return res.checkin_partner_count
'''
''' TODO: clean-up
def default_pending_cardex(self):
def default_pending_checkin_partner(self):
if 'reservation_ids' and 'folio' in self.env.context:
ids = [item[1] for item in self.env.context['reservation_ids']]
reservations = self.env['hotel.reservation'].browse(ids)
for res in reservations:
return res.adults + res.children - res.cardex_count
return res.adults + res.children - res.checkin_partner_count
'''
''' TODO: clean-up - list of checkins on smart button clean is not used anymore
def comp_checkin_list_visible(self):
if 'partner_id' in self.env.context:
self.list_checkin_cardex = False
self.list_checkin_checkin_partner = False
return
'''
def comp_checkin_edit(self):
if 'edit_cardex' in self.env.context:
if 'edit_checkin_partner' in self.env.context:
return True
return False
cardex_ids = fields.Many2many('cardex', 'reservation_id',
default=default_cardex_ids)
# count_cardex = fields.Integer('Cardex counter',
# default=default_count_cardex)
# pending_cardex = fields.Integer('Cardex pending',
# default=default_pending_cardex)
checkin_partner_ids = fields.Many2many('hotel_checkin_partner', 'reservation_id',
default=default_checkin_partner_ids)
# count_checkin_partner = fields.Integer('Checkin counter',
# default=default_count_checkin_partner)
# pending_checkin_partner = fields.Integer('Checkin pending',
# default=default_pending_checkin_partner)
partner_id = fields.Many2one('res.partner',
default=default_partner_id)
reservation_id = fields.Many2one('hotel.reservation',
@@ -106,24 +106,24 @@ class Wizard(models.TransientModel):
exit_date = fields.Date(default=default_exit_date,
required=True)
firstname_cardex = fields.Char('Firstname',
firstname_checkin_partner = fields.Char('Firstname',
required=True)
lastname_cardex = fields.Char('Lastname',
lastname_checkin_partner = fields.Char('Lastname',
required=True)
email_cardex = fields.Char('E-mail')
email_checkin_partner = fields.Char('E-mail')
mobile_cardex = fields.Char('Mobile')
mobile_checkin_partner = fields.Char('Mobile')
segmentation_id = fields.Many2many(
related='reservation_id.folio_id.segmentation_ids')
''' TODO: clean-up - list of checkins on smart button clean is not used anymore
list_checkin_cardex = fields.Boolean(compute=comp_checkin_list_visible,
list_checkin_checkin_partner = fields.Boolean(compute=comp_checkin_list_visible,
default=True, store=True)
'''
# edit_checkin_cardex = fields.Boolean(default=comp_checkin_edit,
# edit_checkin_checkin_partner = fields.Boolean(default=comp_checkin_edit,
# store=True)
op_select_partner = fields.Selection([
@@ -142,38 +142,38 @@ class Wizard(models.TransientModel):
if self.op_select_partner == 'S':
partner_vals = {
'id': self.partner_id.id,
'firstname': self.firstname_cardex,
'lastname': self.lastname_cardex,
'email': self.email_cardex,
'mobile': self.mobile_cardex,
'firstname': self.firstname_checkin_partner,
'lastname': self.lastname_checkin_partner,
'email': self.email_checkin_partner,
'mobile': self.mobile_checkin_partner,
}
self.partner_id.sudo().write(partner_vals)
elif self.op_select_partner == 'C':
partner_vals = {
'firstname': self.firstname_cardex,
'lastname': self.lastname_cardex,
'email': self.email_cardex,
'mobile': self.mobile_cardex,
'firstname': self.firstname_checkin_partner,
'lastname': self.lastname_checkin_partner,
'email': self.email_checkin_partner,
'mobile': self.mobile_checkin_partner,
}
new_partner = self.env['res.partner'].create(partner_vals)
self.partner_id = self.env['res.partner'].browse(new_partner.id)
# prepare checkin values
cardex_val = {
checkin_partner_val = {
'partner_id': self.partner_id.id,
'enter_date': self.enter_date,
'exit_date': self.exit_date
}
record_id = self.env['hotel.reservation'].browse(
self.reservation_id.id)
# save the cardex for this reservation
# save the checkin for this reservation
record_id.write({
'cardex_ids': [(0, False, cardex_val)],
'checkin_partner_ids': [(0, False, checkin_partner_val)],
'segmentation_id': self.segmentation_id,
})
# update the state of the current reservation
if record_id.cardex_count > 0:
if record_id.checkin_partner_count > 0:
record_id.state = 'booking'
record_id.is_checkin = False
folio = self.env['hotel.folio'].browse(self.reservation_id.folio_id.id)
@@ -192,11 +192,11 @@ class Wizard(models.TransientModel):
ids = [item[1] for item in self.env.context['reservation_ids']]
reservations = self.env['hotel.reservation'].browse(ids)
for res in reservations:
_logger.info('reservation cardex_count %d', res.cardex_count)
_logger.info('reservation checkin_partner_count %d', res.checkin_partner_count)
# return {
# 'domain': {'reservation_id': [('folio_id','=', self.env.context['folio']), 'count_cardex','=','2']},
# 'warning': {'title': "Warning", 'message': self.env.context['cardex_count']},
# 'domain': {'reservation_id': [('folio_id','=', self.env.context['folio']), 'count_checkin_partner','=','2']},
# 'warning': {'title': "Warning", 'message': self.env.context['checkin_partner_count']},
# }
'''
@@ -204,10 +204,10 @@ class Wizard(models.TransientModel):
def onchange_partner_id(self):
# update partner fields
write_vals = {
'firstname_cardex': self.partner_id.firstname,
'lastname_cardex': self.partner_id.lastname,
'email_cardex': self.partner_id.email,
'mobile_cardex': self.partner_id.mobile,
'firstname_checkin_partner': self.partner_id.firstname,
'lastname_checkin_partner': self.partner_id.lastname,
'email_checkin_partner': self.partner_id.email,
'mobile_checkin_partner': self.partner_id.mobile,
}
# show the checkin fields if a partner is selected
if self.op_select_partner == 'S' and self.partner_id.id != False:

View File

@@ -10,7 +10,7 @@
<group col="4">
<field options="{'no_quick_create': True, 'no_create_edit' : True, 'no_open': True}"
name="reservation_id" nolabel="1"
domain="[('folio_id','=',context.get('folio')), ('state', '!=', 'cancelled'), ('cardex_pending_count', '>', 0)]"
domain="[('folio_id','=',context.get('folio')), ('state', '!=', 'cancelled'), ('checkin_partner_pending_count', '>', 0)]"
style="max-width: 95%; width: 32.2em"/>
</group>
<group col="4">
@@ -25,13 +25,13 @@
</group>
<group col="4" attrs="{'invisible':[('checkin_mode', '=', 0)]}" >
<field name="firstname_cardex" colspan="2"/>
<field name="lastname_cardex" colspan="2"/>
<field name="firstname_checkin_partner" colspan="2"/>
<field name="lastname_checkin_partner" colspan="2"/>
</group>
<group col="4" attrs="{'invisible':[('checkin_mode', '=', 0)]}" >
<field name="email_cardex" colspan="2"/>
<field name="mobile_cardex" colspan="2"/>
<field name="email_checkin_partner" colspan="2"/>
<field name="mobile_checkin_partner" colspan="2"/>
</group>
<footer>
@@ -41,7 +41,7 @@
<field name="checkin_mode" invisible="True"/>
<!-- <field name="checkin_show" invisible="True"/> -->
<!-- <field name="edit_checkin_cardex" invisible="True"/> -->
<!-- <field name="edit_checkin_checkin_partner" invisible="True"/> -->
</footer>
</sheet>
</form>
@@ -66,17 +66,17 @@
<label for="reservation_id" string="Resevation"/>
<field name="reservation_id" nolabel="1" domain="[('folio_id','=',context.get('folio'))]"/>
<button type="action" class="oe_stat_button"
id="cardex_smart_button"
id="checkin_partner_smart_button"
icon="fa-user-plus"
name="%(launch_checkin_wizard_add)d"
context="{'reservation_id': reservation_id, 'hidden_cardex': True}">
context="{'reservation_id': reservation_id, 'hidden_checkin_partner': True}">
<div>
<field name="pending_cardex"
<field name="pending_checkin_partner"
string="Pending" widget="statinfo"/>
</div>
</button>
</group>
<field name="cardex_ids" readonly="1"/>
<field name="checkin_partner_ids" readonly="1"/>
</sheet>
</form>
</field>