feat(issue): Create tasks from issues
This commit is contained in:
parent
2221151132
commit
5327d0253d
9
erpnext/support/doctype/issue/issue.js
Normal file → Executable file
9
erpnext/support/doctype/issue/issue.js
Normal file → Executable file
@ -9,6 +9,13 @@ frappe.ui.form.on("Issue", {
|
||||
frm.set_value("status", "Closed");
|
||||
frm.save();
|
||||
});
|
||||
|
||||
frm.add_custom_button(__("Task"), function () {
|
||||
frappe.model.open_mapped_doc({
|
||||
method: "erpnext.support.doctype.issue.issue.make_task",
|
||||
frm: frm
|
||||
});
|
||||
}, __("Make"));
|
||||
} else {
|
||||
frm.add_custom_button(__("Reopen"), function() {
|
||||
frm.set_value("status", "Open");
|
||||
@ -37,7 +44,7 @@ frappe.ui.form.on("Issue", {
|
||||
if (!frm.timeline.wrapper.find('.btn-split-issue').length) {
|
||||
let split_issue = __("Split Issue")
|
||||
$(`<button class="btn btn-xs btn-link btn-add-to-kb text-muted hidden-xs btn-split-issue pull-right" style="display:inline-block; margin-right: 15px">
|
||||
${split_issue}
|
||||
${split_issue}
|
||||
</button>`)
|
||||
.appendTo(frm.timeline.wrapper.find('.comment-header .asset-details:not([data-communication-type="Comment"])'))
|
||||
if (!frm.timeline.wrapper.data("split-issue-event-attached")){
|
||||
|
22
erpnext/support/doctype/issue/issue.py
Normal file → Executable file
22
erpnext/support/doctype/issue/issue.py
Normal file → Executable file
@ -7,11 +7,13 @@ import json
|
||||
from frappe import _
|
||||
|
||||
from frappe.model.document import Document
|
||||
from frappe.model.mapper import get_mapped_doc
|
||||
from frappe.utils import now
|
||||
from frappe.utils.user import is_website_user
|
||||
|
||||
sender_field = "raised_by"
|
||||
|
||||
|
||||
class Issue(Document):
|
||||
def get_feed(self):
|
||||
return "{0}: {1}".format(_(self.status), self.subject)
|
||||
@ -97,6 +99,7 @@ class Issue(Document):
|
||||
doc.save(ignore_permissions=True)
|
||||
return replicated_issue.name
|
||||
|
||||
|
||||
def get_list_context(context=None):
|
||||
return {
|
||||
"title": _("Issues"),
|
||||
@ -107,6 +110,7 @@ def get_list_context(context=None):
|
||||
'no_breadcrumbs': True
|
||||
}
|
||||
|
||||
|
||||
def get_issue_list(doctype, txt, filters, limit_start, limit_page_length=20, order_by=None):
|
||||
from frappe.www.list import get_list
|
||||
user = frappe.session.user
|
||||
@ -124,12 +128,14 @@ def get_issue_list(doctype, txt, filters, limit_start, limit_page_length=20, ord
|
||||
|
||||
return get_list(doctype, txt, filters, limit_start, limit_page_length, ignore_permissions=ignore_permissions)
|
||||
|
||||
|
||||
@frappe.whitelist()
|
||||
def set_status(name, status):
|
||||
st = frappe.get_doc("Issue", name)
|
||||
st.status = status
|
||||
st.save()
|
||||
|
||||
|
||||
def auto_close_tickets():
|
||||
""" auto close the replied support tickets after 7 days """
|
||||
auto_close_after_days = frappe.db.get_value("Support Settings", "Support Settings", "close_issue_after_days") or 7
|
||||
@ -150,6 +156,7 @@ def set_multiple_status(names, status):
|
||||
for name in names:
|
||||
set_status(name, status)
|
||||
|
||||
|
||||
def has_website_permission(doc, ptype, user, verbose=False):
|
||||
from erpnext.controllers.website_list_for_contact import has_website_permission
|
||||
permission_based_on_customer = has_website_permission(doc, ptype, user, verbose)
|
||||
@ -160,3 +167,18 @@ def has_website_permission(doc, ptype, user, verbose=False):
|
||||
def update_issue(contact, method):
|
||||
"""Called when Contact is deleted"""
|
||||
frappe.db.sql("""UPDATE `tabIssue` set contact='' where contact=%s""", contact.name)
|
||||
|
||||
|
||||
@frappe.whitelist()
|
||||
def make_task(source_name, target_doc=None):
|
||||
def set_missing_values(source, target):
|
||||
if not target.project:
|
||||
target.project = frappe.db.get_value("Project", {"customer": source.customer})
|
||||
|
||||
doclist = get_mapped_doc("Issue", source_name, {
|
||||
"Issue": {
|
||||
"doctype": "Task"
|
||||
}
|
||||
}, target_doc, set_missing_values)
|
||||
|
||||
return doclist
|
||||
|
Loading…
x
Reference in New Issue
Block a user