- if booked_lines:
- booking = Booking(len(self.bookings), booked_lines[:])
- self._apply_booking_to_accounts(booking)
- self.bookings += [booking]
- booked_lines.clear()
+ if booked:
+ self.bookings += [Booking(len(self.bookings), booked[:])]
+ booked.clear()
+ if booking:
+ booking.gap_lines = gap_lines[:-1]
+ self._sync(recalc_datlines=False)
+
+ def _sync(self, recalc_datlines=True, check_dates=True):
+ if recalc_datlines:
+ self.dat_lines = self.initial_gap_lines[:]
+ for booking in self.bookings:
+ self.dat_lines += booking.booked_lines
+ self.dat_lines += booking.gap_lines
+ for idx, booking in enumerate(self.bookings[1:]):
+ booking.prev = self.bookings[idx]
+ for idx, booking in enumerate(self.bookings[:-1]):
+ booking.next = self.bookings[idx + 1]
+ self.bookings[-1].next = None
+ if check_dates:
+ last_date = ''
+ err_msg = 'date < previous valid date'
+ for booking in self.bookings:
+ if err_msg in booking.intro_line.errors:
+ booking.intro_line.errors.remove(err_msg)
+ if last_date > booking.date:
+ booking.intro_line.errors += [err_msg]
+ else:
+ last_date = booking.date
+ self._recalc_prev_line_empty()
+ self.accounts = {}
+ for dat_line in self.dat_lines: