fix: better overlap logic for job card (backport #38432) (#38522)

fix: better overlap logic for job card (#38432)

(cherry picked from commit 74eab910427ca4af94119b0c099e7743be770006)

Co-authored-by: rohitwaghchaure <rohitw1991@gmail.com>
This commit is contained in:
mergify[bot] 2023-12-03 09:49:48 +05:30 committed by GitHub
parent 0a29dbe09e
commit 2a9e843610
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -261,8 +261,7 @@ class JobCard(Document):
# override capacity for employee
production_capacity = 1
overlap_count = self.get_overlap_count(time_logs)
if time_logs and production_capacity > overlap_count:
if not self.has_overlap(production_capacity, time_logs):
return {}
if self.workstation_type and time_logs:
@ -272,16 +271,15 @@ class JobCard(Document):
return time_logs[-1]
@staticmethod
def get_overlap_count(time_logs):
count = 1
def has_overlap(self, production_capacity, time_logs):
overlap = False
if production_capacity == 1 and len(time_logs) > 0:
return True
# Check overlap exists or not between the overlapping time logs with the current Job Card
for idx, row in enumerate(time_logs):
next_idx = idx
if idx + 1 < len(time_logs):
next_idx = idx + 1
next_row = time_logs[next_idx]
for row in time_logs:
count = 1
for next_row in time_logs:
if row.name == next_row.name:
continue
@ -301,7 +299,10 @@ class JobCard(Document):
):
count += 1
return count
if count > production_capacity:
return True
return overlap
def get_time_logs(self, args, doctype, check_next_available_slot=False):
jc = frappe.qb.DocType("Job Card")