Status fields
All checks were successful
Update odoo 18 / update (push) Successful in 28s

This commit is contained in:
mgite 2024-11-19 13:03:38 +04:00
parent 7b00bbbe79
commit b158be74fd
3 changed files with 18 additions and 31 deletions

View File

@ -188,42 +188,39 @@ class HmsBookings(models.Model):
status = fields.Many2one(comodel_name="hms.status", string="Status", compute="_compute_checkin_checkout_date", store=True) status = fields.Many2one(comodel_name="hms.status", string="Status", compute="_compute_checkin_checkout_date", store=True)
booking_status_text = fields.Char(string="Booking Status ", compute="_compute_checkin_checkout_date", store=True) booking_status_text = fields.Char(string="Booking Status ", compute="_compute_checkin_checkout_date", store=True)
show_booking_status = fields.Boolean(string="Show Booking Status", compute="_compute_checkin_checkout_date", store=True)
status_text = fields.Char(string="Status ", compute="_compute_checkin_checkout_date", store=True) status_text = fields.Char(string="Status ", compute="_compute_checkin_checkout_date", store=True)
show_status = fields.Boolean(string="Show Status", compute="_compute_checkin_checkout_date", store=True)
@api.depends('roomStays', 'payment_ids') @api.depends('roomStays', 'payment_ids')
def _compute_checkin_checkout_date(self): def _compute_checkin_checkout_date(self):
for booking in self: for booking in self:
# Status fields # Status fields
booking.show_booking_status = False
booking.show_status = False
if booking.roomStays.filtered(lambda stay: stay.bookingStatus.name == 'Confirmed'): if booking.roomStays.filtered(lambda stay: stay.bookingStatus.name == 'Confirmed'):
booking.booking_status = self.env['hms.booking.status'].search([('name', '=', 'Confirmed')]).id booking.booking_status = self.env['hms.booking.status'].search([('name', '=', 'Confirmed')]).id
booking.booking_status_text = f"Confirmed ({len(booking.roomStays.filtered(lambda stay: stay.bookingStatus.name == 'Confirmed'))} / {len(booking.roomStays)})" booking.booking_status_text = f"Confirmed ({len(booking.roomStays.filtered(lambda stay: stay.bookingStatus.name == 'Confirmed'))} / {len(booking.roomStays)})"
booking.show_booking_status = True
elif not booking.roomStays.filtered(lambda stay: stay.bookingStatus.name != 'Cancelled'): elif not booking.roomStays.filtered(lambda stay: stay.bookingStatus.name != 'Cancelled'):
booking.booking_status = self.env['hms.booking.status'].search([('name', '=', 'Cancelled')]).id booking.booking_status = self.env['hms.booking.status'].search([('name', '=', 'Cancelled')]).id
booking.booking_status_text = "Cancelled"
elif not booking.roomStays.filtered(lambda stay: stay.bookingStatus.name != 'Pending'): elif not booking.roomStays.filtered(lambda stay: stay.bookingStatus.name != 'Pending'):
booking.booking_status = self.env['hms.booking.status'].search([('name', '=', 'UpcoPendingming')]).id booking.booking_status = self.env['hms.booking.status'].search([('name', '=', 'Pending')]).id
booking.booking_status_text = "Pending"
if not booking.roomStays.filtered(lambda stay: stay.status.name == 'CheckedIn') and not booking.roomStays.filtered(lambda stay: stay.status.name == 'CheckedOut') and booking.roomStays.filtered(lambda stay: stay.status.name == 'New'): if not booking.roomStays.filtered(lambda stay: stay.status.name == 'CheckedIn') and not booking.roomStays.filtered(lambda stay: stay.status.name == 'CheckedOut') and booking.roomStays.filtered(lambda stay: stay.status.name == 'New'):
booking.status = self.env['hms.status'].search([('name', '=', 'Upcoming')]).id booking.status = self.env['hms.status'].search([('name', '=', 'Upcoming')]).id
booking.status_text = "Upcoming"
elif booking.roomStays.filtered(lambda stay: stay.status.name == 'CheckedIn'): elif booking.roomStays.filtered(lambda stay: stay.status.name == 'CheckedIn'):
checked_in_records = self.env['hms.status'].search([('name', '=', 'CheckedIn')]) checked_in_records = self.env['hms.status'].search([('name', '=', 'CheckedIn')])
booking.status = checked_in_records.id booking.status = checked_in_records.id
booking.status_text = f"CheckedIn ({len(booking.roomStays.filtered(lambda stay: stay.status.name == 'CheckedIn'))} / {len(booking.roomStays)})" booking.status_text = f"CheckedIn ({len(booking.roomStays.filtered(lambda stay: stay.status.name == 'CheckedIn'))} / {len(booking.roomStays)})"
booking.show_status = True
elif booking.roomStays.filtered(lambda stay: stay.status.name == 'CheckedOut'): elif booking.roomStays.filtered(lambda stay: stay.status.name == 'CheckedOut'):
checked_out_records = self.env['hms.status'].search([('name', '=', 'CheckedOut')]) checked_out_records = self.env['hms.status'].search([('name', '=', 'CheckedOut')])
booking.status = checked_out_records.id booking.status = checked_out_records.id
booking.status_text = f"CheckedOut ({len(booking.roomStays.filtered(lambda stay: stay.status.name == 'CheckedOut'))} / {len(booking.roomStays)})" booking.status_text = f"CheckedOut ({len(booking.roomStays.filtered(lambda stay: stay.status.name == 'CheckedOut'))} / {len(booking.roomStays)})"
booking.show_status = True
elif not booking.roomStays.filtered(lambda stay: stay.status.name != 'Cancelled'): elif not booking.roomStays.filtered(lambda stay: stay.status.name != 'Cancelled'):
booking.status = self.env['hms.status'].search([('name', '=', 'Cancelled')]).id booking.status = self.env['hms.status'].search([('name', '=', 'Cancelled')]).id
booking.status_text = "Cancelled"
elif not booking.roomStays.filtered(lambda stay: stay.status.name != 'No Show'): elif not booking.roomStays.filtered(lambda stay: stay.status.name != 'No Show'):
booking.status = self.env['hms.status'].search([('name', '=', 'No Show')]).id booking.status = self.env['hms.status'].search([('name', '=', 'No Show')]).id
booking.status_text = "No Show"
# Computed fields # Computed fields
checkin_dates = booking.roomStays.mapped('checkInDateTime') checkin_dates = booking.roomStays.mapped('checkInDateTime')

View File

@ -16,8 +16,8 @@
<field name="sourceChannelName" optional="show"/> <field name="sourceChannelName" optional="show"/>
<field name="booking_date" optional="show"/> <field name="booking_date" optional="show"/>
<field name="payment_status" optional="show"/> <field name="payment_status" optional="show"/>
<field name="booking_status" optional="show"/> <field name="booking_status_text" optional="show"/>
<field name="status" optional="show"/> <field name="status_text" optional="show"/>
</list> </list>
</field> </field>
</record> </record>
@ -62,15 +62,10 @@
<field name="to_be_paid"/> <field name="to_be_paid"/>
<field name="expected_payment"/> <field name="expected_payment"/>
<field name="currency" invisible="1"/> <field name="currency" invisible="1"/>
<field name="booking_status" invisible="1" options="{'no_open': True, 'no_create': True, 'no_create_edit': True, 'no_quick_create': True}"/>
<field name="booking_status" invisible="booking_status_text == True" options="{'no_open': True, 'no_create': True, 'no_create_edit': True, 'no_quick_create': True}"/> <field name="booking_status_text"/>
<field name="booking_status_text" invisible="booking_status_text == False"/> <field name="status" invisible="1" options="{'no_open': True, 'no_create': True, 'no_create_edit': True, 'no_quick_create': True}"/>
<field name="status_text"/>
<field name="status" invisible="show_status == True" options="{'no_open': True, 'no_create': True, 'no_create_edit': True, 'no_quick_create': True}"/>
<field name="status_text" invisible="show_status == False"/>
<field name="show_status" invisible="1"/>
<field name="booking_status_text" invisible="1"/>
</group> </group>
</group> </group>
<group> <group>

View File

@ -18,8 +18,8 @@
<field name="sourceChannelName" optional="show"/> <field name="sourceChannelName" optional="show"/>
<field name="booking_date" optional="show"/> <field name="booking_date" optional="show"/>
<field name="payment_status" optional="show"/> <field name="payment_status" optional="show"/>
<field name="booking_status" optional="show"/> <field name="booking_status_text" optional="show"/>
<field name="status" optional="show"/> <field name="status_text" optional="show"/>
</list> </list>
</field> </field>
</record> </record>
@ -65,15 +65,10 @@
<field name="to_be_paid"/> <field name="to_be_paid"/>
<field name="expected_payment"/> <field name="expected_payment"/>
<field name="currency" invisible="1"/> <field name="currency" invisible="1"/>
<field name="booking_status" invisible="1" options="{'no_open': True, 'no_create': True, 'no_create_edit': True, 'no_quick_create': True}"/>
<field name="booking_status" invisible="booking_status_text == True" options="{'no_open': True, 'no_create': True, 'no_create_edit': True, 'no_quick_create': True}"/> <field name="booking_status_text"/>
<field name="booking_status_text" invisible="booking_status_text == False"/> <field name="status" invisible="1" options="{'no_open': True, 'no_create': True, 'no_create_edit': True, 'no_quick_create': True}"/>
<field name="status_text"/>
<field name="status" invisible="show_status == True" options="{'no_open': True, 'no_create': True, 'no_create_edit': True, 'no_quick_create': True}"/>
<field name="status_text" invisible="show_status == False"/>
<field name="show_status" invisible="1"/>
<field name="booking_status_text" invisible="1"/>
</group> </group>
</group> </group>
<group> <group>