Merge branch 'develop' of https://github.com/frappe/erpnext into sla_fix
This commit is contained in:
commit
91478181cb
@ -66,15 +66,14 @@ class ItemVariantsCacheManager:
|
||||
as_list=1
|
||||
)
|
||||
|
||||
disabled_items = [i.name for i in frappe.db.get_all('Item', {'disabled': 1})]
|
||||
disabled_items = set([i.name for i in frappe.db.get_all('Item', {'disabled': 1})])
|
||||
|
||||
attribute_value_item_map = frappe._dict({})
|
||||
item_attribute_value_map = frappe._dict({})
|
||||
|
||||
item_variants_data = [r for r in item_variants_data if r[0] not in disabled_items]
|
||||
for row in item_variants_data:
|
||||
item_code, attribute, attribute_value = row
|
||||
if item_code in disabled_items:
|
||||
continue
|
||||
# (attr, value) => [item1, item2]
|
||||
attribute_value_item_map.setdefault((attribute, attribute_value), []).append(item_code)
|
||||
# item => {attr1: value1, attr2: value2}
|
||||
|
@ -257,7 +257,8 @@ def get_items_with_selected_attributes(item_code, selected_attributes):
|
||||
|
||||
items = []
|
||||
for attribute, value in selected_attributes.items():
|
||||
items.append(set(attribute_value_item_map[(attribute, value)]))
|
||||
filtered_items = attribute_value_item_map.get((attribute, value), [])
|
||||
items.append(set(filtered_items))
|
||||
|
||||
return set.intersection(*items)
|
||||
|
||||
|
@ -109,6 +109,18 @@ frappe.ui.form.on("Project", {
|
||||
}
|
||||
});
|
||||
},
|
||||
|
||||
status: function(frm) {
|
||||
if (frm.doc.status === 'Cancelled') {
|
||||
frappe.confirm(__('Set tasks in this project as cancelled?'), () => {
|
||||
frm.doc.tasks = frm.doc.tasks.map(task => {
|
||||
task.status = 'Cancelled';
|
||||
return task;
|
||||
});
|
||||
frm.refresh_field('tasks');
|
||||
});
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
frappe.ui.form.on("Project Task", {
|
||||
|
@ -35,6 +35,9 @@ class Project(Document):
|
||||
|
||||
def load_tasks(self):
|
||||
"""Load `tasks` from the database"""
|
||||
if frappe.flags.in_import:
|
||||
return
|
||||
|
||||
self.tasks = []
|
||||
for task in self.get_tasks():
|
||||
task_map = {
|
||||
|
@ -105,7 +105,7 @@ class Task(NestedSet):
|
||||
|
||||
def update_project(self):
|
||||
if self.project and not self.flags.from_project:
|
||||
frappe.get_doc("Project", self.project).update_project()
|
||||
frappe.get_cached_doc("Project", self.project).update_project()
|
||||
|
||||
def check_recursion(self):
|
||||
if self.flags.ignore_recursion_check: return
|
||||
@ -150,7 +150,7 @@ class Task(NestedSet):
|
||||
|
||||
def populate_depends_on(self):
|
||||
if self.parent_task:
|
||||
parent = frappe.get_doc('Task', self.parent_task)
|
||||
parent = frappe.get_cached_doc('Task', self.parent_task)
|
||||
if not self.name in [row.task for row in parent.depends_on]:
|
||||
parent.append("depends_on", {
|
||||
"doctype": "Task Depends On",
|
||||
|
Loading…
x
Reference in New Issue
Block a user