inherit

 avatar
user_3048252145
python
4 years ago
3.0 kB
31
No Index
class HotelFolioLineExt(models.Model):
    _inherit = "hotel.folio.line"

    @api.onchange("checkin_date", "checkout_date")
    def on_change_checkout(self):
        res = super(HotelFolioLineExt, self).on_change_checkout()
        hotel_room_obj = self.env["hotel.room"]
        avail_prod_ids = []
        hotel_room_ids = hotel_room_obj.search([])
        for room in hotel_room_ids:
            assigned = False
            for line in room.room_reservation_line_ids:
                if line.status != "cancel":
                    if (
                            self.checkin_date
                            <= line.check_in
                            <= self.checkout_date
                    ) or (
                            self.checkin_date
                            <= line.check_out
                            <= self.checkout_date
                    ):
                        assigned = True
                    elif (
                            line.check_in <= self.checkin_date <= line.check_out
                    ) or (
                            line.check_in <= self.checkout_date <= line.check_out
                    ):
                        assigned = True
            if not assigned:
                avail_prod_ids.append(room.product_id.id)
        return res

    @api.multi
    def write(self, vals):
        """
        Overrides orm write method.
        @param self: The object pointer
        @param vals: dictionary of fields value.
        Update Hotel Room Reservation line history"""
        reservation_line_obj = self.env["hotel.room.reservation.line"]
        room_obj = self.env["hotel.room"]
        prod_id = vals.get("product_id") or self.product_id.id
        chkin = vals.get("checkin_date") or self.checkin_date
        chkout = vals.get("checkout_date") or self.checkout_date
        is_reserved = self.is_reserved
        if prod_id and is_reserved:
            prod_domain = [("product_id", "=", prod_id)]
            prod_room = room_obj.search(prod_domain, limit=1)
            if self.product_id and self.checkin_date and self.checkout_date:
                old_prd_domain = [("product_id", "=", self.product_id.id)]
                old_prod_room = room_obj.search(old_prd_domain, limit=1)
                if prod_room and old_prod_room:
                    # Check for existing room lines.
                    srch_rmline = [
                        ("room_id", "=", old_prod_room.id),
                        ("check_in", "=", self.checkin_date),
                        ("check_out", "=", self.checkout_date),
                    ]
                    rm_lines = reservation_line_obj.search(srch_rmline)
                    if rm_lines:
                        rm_line_vals = {
                            "room_id": prod_room.id,
                            "check_in": chkin,
                            "check_out": chkout,
                        }
                        rm_lines.write(rm_line_vals)
        return super(HotelFolioLineExt, self).write(vals)
Editor is loading...