Merge branch 'master' of github.com:webnotes/erpnext

This commit is contained in:
Anand Doshi
2012-11-26 11:54:43 +05:30
16 changed files with 1709 additions and 1962 deletions

View File

@@ -2,16 +2,16 @@
{ {
"owner": "Administrator", "owner": "Administrator",
"docstatus": 0, "docstatus": 0,
"creation": "2012-11-23 18:26:54", "creation": "2012-11-23 16:46:22",
"modified_by": "Administrator", "modified_by": "Administrator",
"modified": "2012-11-23 18:27:38" "modified": "2012-11-26 10:11:53"
}, },
{ {
"name": "__common__", "name": "__common__",
"ref_doctype": "Sales Invoice", "ref_doctype": "Sales Invoice",
"doctype": "Report", "doctype": "Report",
"is_standard": "Yes", "is_standard": "Yes",
"query": "select \n `tabDelivery Note`.`name` as \"Delivery Note:Link/Delivery Note:120\",\n `tabDelivery Note`.`status` as \"Status\",\n `tabDelivery Note`.`posting_date` as \"Date:Date\",\n `tabDelivery Note Item`.item_code as \"Item:Link/Item:120\",\n `tabDelivery Note Item`.description as \"Description\",\n `tabDelivery Note Item`.qty as \"Qty:Float\",\n `tabDelivery Note Item`.billed_qty as \"Billed Qty:Float\"\nfrom\n `tabDelivery Note`, `tabDelivery Note Item`\nwhere\n `tabDelivery Note Item`.`parent` = `tabDelivery Note`.`name`\n and `tabDelivery Note`.docstatus = 1\n and ifnull(`tabDelivery Note Item`.billed_qty, 0) < ifnull(`tabDelivery Note Item`.qty, 0)\norder by `tabDelivery Note`.posting_date asc" "query": "select \n `tabDelivery Note`.`name` as \"Delivery Note:Link/Delivery Note:120\",\n`tabDelivery Note`.`customer` as \"Customer:Link/Customer:120\",\n`tabDelivery Note`.`status` as \"Status\",\n `tabDelivery Note`.`posting_date` as \"Date:Date\",\n `tabDelivery Note Item`.item_code as \"Item:Link/Item:120\",\n `tabDelivery Note Item`.description as \"Description\",\n `tabDelivery Note Item`.qty as \"Qty:Float\",\n `tabDelivery Note Item`.billed_qty as \"Billed Qty:Float\"\nfrom\n `tabDelivery Note`, `tabDelivery Note Item`\nwhere\n `tabDelivery Note Item`.`parent` = `tabDelivery Note`.`name`\n and `tabDelivery Note`.docstatus = 1\n and ifnull(`tabDelivery Note Item`.billed_qty,0) < ifnull(`tabDelivery Note Item`.qty,0)\norder by `tabDelivery Note`.posting_date asc"
}, },
{ {
"name": "Delivered Items To Be Billed", "name": "Delivered Items To Be Billed",

View File

@@ -1,4 +1,7 @@
erpnext.updates = [ erpnext.updates = [
["24ht November 2012", [
"Support Ticket: Support Ticket Response is now Communication",
]],
["23rd November 2012", [ ["23rd November 2012", [
"General Ledger: Auto-suggest Accounts for filtering", "General Ledger: Auto-suggest Accounts for filtering",
"Calendar: User Interface Fixes, small text for events", "Calendar: User Interface Fixes, small text for events",

View File

@@ -0,0 +1,26 @@
import webnotes
import email.utils
def execute():
webnotes.conn.commit()
for d in webnotes.conn.sql("""select owner, creation, modified, modified_by, parent,
from_email, mail from `tabSupport Ticket Response`""", as_dict=1):
c = webnotes.doc("Communication")
c.creation = d.creation
c.owner = d.owner
c.modified = d.modified
c.modified_by = d.modified_by
c.naming_series = "COMM-"
c.subject = "response to Support Ticket: " + d.parent
c.content = d.mail
c.email_address = d.from_email
c.support_ticket = d.parent
email_addr = email.utils.parseaddr(c.email_address)[1]
c.contact = webnotes.conn.get_value("Contact", {"email_id": email_addr}, "name") or None
c.lead = webnotes.conn.get_value("Lead", {"email_id": email_addr}, "name") or None
c.communication_medium = "Email"
webnotes.conn.begin()
c.save(1, keep_timestamps=True)
webnotes.conn.commit()
webnotes.delete_doc("DocType", "Support Ticket Response")

View File

@@ -679,4 +679,8 @@ patch_list = [
'patch_module': 'patches.november_2012', 'patch_module': 'patches.november_2012',
'patch_file': 'remove_old_unbilled_items_report', 'patch_file': 'remove_old_unbilled_items_report',
}, },
{
'patch_module': 'patches.november_2012',
'patch_file': 'support_ticket_response_to_communication',
},
] ]

File diff suppressed because it is too large Load Diff

View File

@@ -1,406 +1,340 @@
# DocType, Communication
[ [
# These values are common in all dictionaries
{ {
u'creation': '2012-08-31 17:14:18', "owner": "Administrator",
u'docstatus': 0, "docstatus": 0,
u'modified': '2012-11-14 12:15:56', "creation": "2012-11-14 12:25:16",
u'modified_by': u'Administrator', "modified_by": "Administrator",
u'owner': u'Administrator' "modified": "2012-11-24 15:22:32"
}, },
# These values are common for all DocType
{ {
'allow_attach': 1, "allow_attach": 1,
'description': u'Keep a track of all communications', "doctype": "DocType",
u'doctype': u'DocType', "module": "Support",
'document_type': u'Master', "name": "__common__",
'in_dialog': 1, "in_dialog": 1,
'module': u'Support', "document_type": "Master",
u'name': u'__common__', "description": "Keep a track of all communications"
'version': 1
}, },
# These values are common for all DocField
{ {
u'doctype': u'DocField', "name": "__common__",
u'name': u'__common__', "parent": "Communication",
'parent': u'Communication', "doctype": "DocField",
'parentfield': u'fields', "parenttype": "DocType",
'parenttype': u'DocType' "parentfield": "fields"
}, },
# These values are common for all DocPerm
{ {
u'doctype': u'DocPerm', "name": "__common__",
u'name': u'__common__', "parent": "Communication",
'parent': u'Communication', "read": 1,
'parentfield': u'permissions', "doctype": "DocPerm",
'parenttype': u'DocType', "write": 1,
'read': 1, "parenttype": "DocType",
'write': 1 "parentfield": "permissions"
}, },
# DocType, Communication
{ {
u'doctype': u'DocType', "name": "Communication",
u'name': u'Communication' "doctype": "DocType"
}, },
# DocField
{ {
u'doctype': u'DocField', "doctype": "DocField",
'fieldname': u'basic_info', "label": "Basic Info",
'fieldtype': u'Section Break', "fieldname": "basic_info",
'label': u'Basic Info', "fieldtype": "Section Break",
'permlevel': 0 "permlevel": 0
}, },
# DocField
{ {
'colour': u'White:FFF', "default": "COMM-",
'default': u'COMM-', "colour": "White:FFF",
u'doctype': u'DocField', "doctype": "DocField",
'fieldname': u'naming_series', "label": "Naming Series",
'fieldtype': u'Select', "options": "COMM-",
'hidden': 1, "fieldname": "naming_series",
'label': u'Naming Series', "fieldtype": "Select",
'options': u'COMM-', "hidden": 1,
'permlevel': 0 "permlevel": 0
}, },
# DocField
{ {
u'doctype': u'DocField', "colour": "White:FFF",
'fieldname': u'category', "doctype": "DocField",
'fieldtype': u'Select', "label": "Subject",
'label': u'Category', "fieldname": "subject",
'options': u'\nSales\nComplaint\nHelp\nSuggestion\nMiscellaneous\nSent Mail', "fieldtype": "Data",
'permlevel': 0, "reqd": 1,
'reqd': 1 "permlevel": 0
}, },
# DocField
{ {
u'doctype': u'DocField', "colour": "White:FFF",
'fieldname': u'action', "doctype": "DocField",
'fieldtype': u'Select', "label": "Content",
'label': u'Action', "width": "400",
'options': u'\nCreated Opportunity\nSent Quotation\nCreated Support Ticket\nCreated Customer Issue\nNo Action\nSent Mail', "fieldname": "content",
'permlevel': 0, "fieldtype": "Text",
'reqd': 1 "reqd": 0,
"permlevel": 0
}, },
# DocField
{ {
u'doctype': u'DocField', "doctype": "DocField",
'fieldname': u'next_communication_date', "options": "simple",
'fieldtype': u'Date', "fieldname": "section_break1",
'label': u'Next Communcation On', "fieldtype": "Section Break",
'permlevel': 0 "permlevel": 0
}, },
# DocField
{ {
u'doctype': u'DocField', "doctype": "DocField",
'fieldname': u'column_break2', "label": "Category",
'fieldtype': u'Column Break', "options": "\nSales\nComplaint\nHelp\nSuggestion\nMiscellaneous\nSent Mail",
'permlevel': 0 "fieldname": "category",
"fieldtype": "Select",
"reqd": 0,
"permlevel": 0
}, },
# DocField
{ {
u'doctype': u'DocField', "doctype": "DocField",
'fieldname': u'subject', "fieldname": "column_break2",
'fieldtype': u'Small Text', "fieldtype": "Column Break",
'label': u'Subject', "permlevel": 0
'permlevel': 0,
'reqd': 1
}, },
# DocField
{ {
u'doctype': u'DocField', "doctype": "DocField",
'fieldname': u'section_break1', "label": "Next Communcation On",
'fieldtype': u'Section Break', "fieldname": "next_communication_date",
'options': u'simple', "fieldtype": "Date",
'permlevel': 0 "permlevel": 0
}, },
# DocField
{ {
u'doctype': u'DocField', "doctype": "DocField",
'fieldname': u'content', "label": "Action",
'fieldtype': u'Text', "options": "\nCreated Opportunity\nSent Quotation\nCreated Support Ticket\nCreated Customer Issue\nNo Action\nSent Mail",
'label': u'Content', "fieldname": "action",
'permlevel': 0, "fieldtype": "Select",
'reqd': 0 "reqd": 0,
"permlevel": 0
}, },
# DocField
{ {
u'doctype': u'DocField', "doctype": "DocField",
'fieldname': u'additional_info', "label": "Additional Info",
'fieldtype': u'Section Break', "fieldname": "additional_info",
'label': u'Additional Info', "fieldtype": "Section Break",
'permlevel': 0 "permlevel": 0
}, },
# DocField
{ {
'colour': u'White:FFF', "colour": "White:FFF",
u'doctype': u'DocField', "doctype": "DocField",
'fieldname': u'column_break3', "label": "Related To",
'fieldtype': u'Column Break', "fieldname": "column_break3",
'label': u'Related To', "fieldtype": "Column Break",
'permlevel': 0 "permlevel": 0
}, },
# DocField
{ {
u'doctype': u'DocField', "doctype": "DocField",
'fieldname': u'lead', "label": "Lead",
'fieldtype': u'Link', "options": "Lead",
'hidden': 0, "fieldname": "lead",
'label': u'Lead', "fieldtype": "Link",
'options': u'Lead', "hidden": 0,
'permlevel': 0 "permlevel": 0
}, },
# DocField
{ {
u'doctype': u'DocField', "doctype": "DocField",
'fieldname': u'contact', "label": "Contact",
'fieldtype': u'Link', "options": "Contact",
'label': u'Contact', "fieldname": "contact",
'options': u'Contact', "fieldtype": "Link",
'permlevel': 0 "permlevel": 0
}, },
# DocField
{ {
u'doctype': u'DocField', "doctype": "DocField",
'fieldname': u'customer', "label": "Customer",
'fieldtype': u'Link', "options": "Customer",
'label': u'Customer', "fieldname": "customer",
'options': u'Customer', "fieldtype": "Link",
'permlevel': 0 "permlevel": 0
}, },
# DocField
{ {
u'doctype': u'DocField', "doctype": "DocField",
'fieldname': u'supplier', "label": "Supplier",
'fieldtype': u'Link', "options": "Supplier",
'label': u'Supplier', "fieldname": "supplier",
'options': u'Supplier', "fieldtype": "Link",
'permlevel': 0 "permlevel": 0
}, },
# DocField
{ {
u'doctype': u'DocField', "doctype": "DocField",
'fieldname': u'opportunity', "label": "Opportunity",
'fieldtype': u'Link', "options": "Opportunity",
'label': u'Opportunity', "fieldname": "opportunity",
'options': u'Opportunity', "fieldtype": "Link",
'permlevel': 0 "permlevel": 0
}, },
# DocField
{ {
u'doctype': u'DocField', "doctype": "DocField",
'fieldname': u'quotation', "label": "Quotation",
'fieldtype': u'Link', "options": "Quotation",
'label': u'Quotation', "fieldname": "quotation",
'options': u'Quotation', "fieldtype": "Link",
'permlevel': 0 "permlevel": 0
}, },
# DocField
{ {
u'doctype': u'DocField', "doctype": "DocField",
'fieldname': u'support_ticket', "label": "Support Ticket",
'fieldtype': u'Link', "options": "Support Ticket",
'label': u'Support Ticket', "fieldname": "support_ticket",
'options': u'Support Ticket', "fieldtype": "Link",
'permlevel': 0 "permlevel": 0
}, },
# DocField
{ {
u'doctype': u'DocField', "doctype": "DocField",
'fieldname': u'column_break1', "fieldname": "column_break1",
'fieldtype': u'Column Break', "fieldtype": "Column Break",
'permlevel': 0 "permlevel": 0
}, },
# DocField
{ {
u'doctype': u'DocField', "doctype": "DocField",
'fieldname': u'communication_medium', "label": "Communication Medium",
'fieldtype': u'Select', "options": "\nChat\nPhone\nEmail\nSMS\nVisit\nOther",
'label': u'Communication Medium', "fieldname": "communication_medium",
'options': u'\nChat\nPhone\nEmail\nSMS\nVisit\nOther', "fieldtype": "Select",
'permlevel': 0 "permlevel": 0
}, },
# DocField
{ {
u'doctype': u'DocField', "doctype": "DocField",
'fieldname': u'phone_no', "label": "Phone No.",
'fieldtype': u'Data', "fieldname": "phone_no",
'label': u'Phone No.', "fieldtype": "Data",
'permlevel': 0 "permlevel": 0
}, },
# DocField
{ {
u'doctype': u'DocField', "doctype": "DocField",
'fieldname': u'email_address', "label": "Email Address",
'fieldtype': u'Data', "fieldname": "email_address",
'label': u'Email Address', "fieldtype": "Data",
'permlevel': 0 "permlevel": 0
}, },
# DocField
{ {
u'doctype': u'DocField', "doctype": "DocField",
'fieldname': u'section_break2', "options": "simple",
'fieldtype': u'Section Break', "fieldname": "section_break2",
'options': u'simple', "fieldtype": "Section Break",
'permlevel': 0 "permlevel": 0
}, },
# DocField
{ {
u'doctype': u'DocField', "doctype": "DocField",
'fieldname': u'column_break4', "label": "By",
'fieldtype': u'Column Break', "fieldname": "column_break4",
'label': u'By', "fieldtype": "Column Break",
'permlevel': 0 "permlevel": 0
}, },
# DocField
{ {
'colour': u'White:FFF', "default": "__user",
'default': u'__user', "colour": "White:FFF",
u'doctype': u'DocField', "doctype": "DocField",
'fieldname': u'user', "label": "User",
'fieldtype': u'Link', "options": "Profile",
'label': u'User', "fieldname": "user",
'options': u'Profile', "fieldtype": "Link",
'permlevel': 1 "permlevel": 1
}, },
# DocField
{ {
u'doctype': u'DocField', "doctype": "DocField",
'fieldname': u'sales_person', "label": "Sales Person",
'fieldtype': u'Link', "options": "Sales Person",
'label': u'Sales Person', "fieldname": "sales_person",
'options': u'Sales Person', "fieldtype": "Link",
'permlevel': 1 "permlevel": 1
}, },
# DocField
{ {
u'doctype': u'DocField', "doctype": "DocField",
'fieldname': u'column_break5', "label": "On",
'fieldtype': u'Column Break', "fieldname": "column_break5",
'label': u'On', "fieldtype": "Column Break",
'permlevel': 0 "permlevel": 0
}, },
# DocField
{ {
'colour': u'White:FFF', "default": "Today",
'default': u'Today', "colour": "White:FFF",
u'doctype': u'DocField', "doctype": "DocField",
'fieldname': u'communication_date', "label": "Date",
'fieldtype': u'Date', "fieldname": "communication_date",
'label': u'Date', "fieldtype": "Date",
'permlevel': 0 "permlevel": 0
}, },
# DocField
{ {
u'doctype': u'DocField', "print_hide": 1,
'fieldname': u'file_list', "no_copy": 1,
'fieldtype': u'Text', "doctype": "DocField",
'hidden': 1, "label": "File List",
'label': u'File List', "fieldname": "file_list",
'no_copy': 1, "fieldtype": "Text",
'permlevel': 0, "hidden": 1,
'print_hide': 1 "permlevel": 0
}, },
# DocField
{ {
u'doctype': u'DocField', "print_hide": 1,
'fieldname': u'_user_tags', "no_copy": 1,
'fieldtype': u'Data', "doctype": "DocField",
'hidden': 1, "label": "User Tags",
'label': u'User Tags', "fieldname": "_user_tags",
'no_copy': 1, "fieldtype": "Data",
'permlevel': 0, "hidden": 1,
'print_hide': 1 "permlevel": 0
}, },
# DocPerm
{ {
'create': 1, "amend": 0,
u'doctype': u'DocPerm', "create": 1,
'permlevel': 0, "doctype": "DocPerm",
'role': u'Support Team' "submit": 0,
"role": "Support Team",
"cancel": 1,
"permlevel": 0
}, },
# DocPerm
{ {
'create': 1, "amend": 0,
u'doctype': u'DocPerm', "create": 1,
'permlevel': 0, "doctype": "DocPerm",
'role': u'Sales Manager' "submit": 0,
"role": "Sales Manager",
"cancel": 1,
"permlevel": 0
}, },
# DocPerm
{ {
'create': 1, "amend": 0,
u'doctype': u'DocPerm', "create": 1,
'permlevel': 0, "doctype": "DocPerm",
'role': u'Sales User' "submit": 0,
"role": "Sales User",
"cancel": 1,
"permlevel": 0
}, },
# DocPerm
{ {
u'doctype': u'DocPerm', "amend": 0,
'permlevel': 1, "create": 0,
'role': u'Sales Manager' "doctype": "DocPerm",
"submit": 0,
"role": "Sales Manager",
"cancel": 0,
"permlevel": 1
}, },
# DocPerm
{ {
u'doctype': u'DocPerm', "amend": 0,
'permlevel': 1, "create": 0,
'role': u'Support Manager' "doctype": "DocPerm",
"submit": 0,
"role": "Support Manager",
"cancel": 0,
"permlevel": 1
}, },
# DocPerm
{ {
'cancel': 1, "create": 1,
'create': 1, "doctype": "DocPerm",
u'doctype': u'DocPerm', "role": "Support Manager",
'permlevel': 0, "cancel": 1,
'role': u'Support Manager' "permlevel": 0
}, },
# DocPerm
{ {
'cancel': 1, "create": 1,
'create': 1, "doctype": "DocPerm",
u'doctype': u'DocPerm', "role": "System Manager",
'permlevel': 0, "cancel": 1,
'role': u'System Manager' "permlevel": 0
} }
] ]

View File

@@ -1,3 +1,18 @@
.communication {
border: 1px solid #aaa;
border-top: 0px;
padding: 7px;
background-color: #f2f2f2
}
.communication:hover {
background-color: #fffff0;
}
.communication:first-child {
border-top: 1px solid #aaa;
}
.support-ticket-wrapper { .support-ticket-wrapper {
margin-top: 10px; margin-top: 10px;
} }

View File

@@ -22,26 +22,15 @@
// xoxoxoxo // xoxoxoxo
// -------- new reply -------- // -------- new reply --------
var cs = cur_frm.cscript;
$.extend(cur_frm.cscript, { $.extend(cur_frm.cscript, {
onload: function(doc, dt, dn) { onload: function(doc, dt, dn) {
// //
// help area // help area
// //
if(in_list(user_roles,'System Manager')) { if(in_list(user_roles,'System Manager')) {
cur_frm.page_layout.footer.help_area.innerHTML = ''; cur_frm.page_layout.footer.help_area.innerHTML = '<hr>\
new wn.widgets.Footer({ <p><a href="#Form/Email Settings/Email Settings">Email Settings</a><br>\
parent:cur_frm.page_layout.footer.help_area, <span class="help">Integrate incoming support emails to Support Ticket</span></p>';
columns:2,
items: [
{
column: 0,
label:'Email Settings',
description:'Integrate your incoming support emails to support ticket',
onclick: function() { loaddoc('Email Settings','Email Settings'); }
},
]
})
} }
if(!doc.customer) hide_field(['customer_name','address_display','contact_display','contact_mobile','contact_email']); if(!doc.customer) hide_field(['customer_name','address_display','contact_display','contact_mobile','contact_email']);
@@ -71,31 +60,30 @@ $.extend(cur_frm.cscript, {
// make thread listing // make thread listing
// //
make_listing: function(doc) { make_listing: function(doc) {
cur_frm.fields_dict['thread_html'].wrapper.innerHTML = ''; var wrapper = cur_frm.fields_dict['thread_html'].wrapper;
$(wrapper)
.html("")
.css({"margin":"10px 0px"});
// render first message var comm_list = wn.model.get("Communication", {"support_ticket": doc.name})
new EmailMessage($a(cur_frm.fields_dict['thread_html'].wrapper, 'div'), { comm_list.push({
from_email: doc.raised_by, "email_address": doc.raised_by,
creation: doc.creation, "modified": doc.creation,
mail: doc.description, "content": doc.description});
content_type: doc.content_type
}, null, -1)
// render thread comm_list.sort(function(a, b) { return new Date(a.modified) > new Date(b.modified)
cur_frm.cscript.thread_list = new wn.ui.Listing({ ? -1 : 1 })
parent: $a(cur_frm.fields_dict['thread_html'].wrapper, 'div'),
no_result_message: 'No responses yet', $.each(comm_list, function(i, c) {
get_query: function() { var comm = new erpnext.CommunicationView({
return 'select mail, from_email, creation, content_type '+ doc: c,
'from `tabSupport Ticket Response` where parent="'+doc.name+'" order by creation asc' support_ticket: doc,
}, parent: wrapper
as_dict: 1, });
render_row: function(parent, data, list, idx) { if(i==0) {
new EmailMessage(parent, data, list, idx); comm.toggle();
} }
}); });
cur_frm.cscript.thread_list.run();
}, },
send: function(doc, dt, dn) { send: function(doc, dt, dn) {
@@ -141,56 +129,41 @@ $.extend(cur_frm.cscript, {
}) })
erpnext.CommunicationView = Class.extend({
init: function(opts) {
EmailMessage = function(parent, args, list, idx) { $.extend(this, opts);
var me = this; this.prepare();
$.extend(this, args);
this.make = function() {
this.creation = wn.datetime.str_to_user(this.creation);
if(this.from_email)
this.from_email = this.from_email.replace('<', '&lt;').replace('>', '&gt;');
// main wrapper
w = $a(parent, 'div', 'support-ticket-wrapper well');
//$(w).addClass('support-ticket-wrapper');
// sender and timestamp
$a($a(w, 'div', 'support-ticket-title'),
'span', 'link_type', {}, repl('By %(from_email)s on %(creation)s:', this),
function() {
// toggle message display on timestamp
if(me.message.style.display.toLowerCase()=='none') {
$ds(me.message);
} else {
$dh(me.message);
}
}
);
// email text
this.message = $a(w, 'div', '',
// style
{lineHeight:'1.7em', display:'none', padding: '7px', width: '575px',
wordWrap: 'break-word', textWrap: 'normal', overflowX: 'auto'},
// newlines for text email
(this.content_type=='text/plain'
? this.mail
.replace(/\n[ ]*\n[\n\t ]*/g, '\n') // excess whitespace
.replace(/\n/g, '<br>')
: this.mail)
);
// show only first and last message
if(idx==-1 || list && list.data.length-1==idx) {
$ds(this.message)
}
}
this.make(); this.make();
} this.toggle();
},
prepare: function() {
//this.doc.when = comment_when(this.doc.modified);
this.doc.when = this.doc.modified;
if(this.doc.content.indexOf("<br>")== -1 && this.doc.content.indexOf("<p>")== -1) {
this.doc.content = this.doc.content.replace(/\n/g, "<br>");
}
this.doc.content = this.doc.content.split("=== In response to ===")[0];
this.doc.content = this.doc.content.split("-----Original Message-----")[0];
},
make: function() {
var me = this;
this.body = $(repl('<div class="communication" title="Click to Expand / Collapse">\
<p><b>%(email_address)s on %(when)s</b></p>\
<div class="comm-content" style="border-top: 1px solid #ddd; padding: 10px"></div>\
</div>', this.doc))
.appendTo(this.parent)
.css({"cursor":"pointer"})
.click(function() {
$(this).find(".comm-content").toggle();
});
this.body.find(".comm-content").html(this.doc.content);
},
toggle: function() {
this.body.find(".comm-content").toggle();
}
})
cur_frm.fields_dict.allocated_to.get_query = erpnext.utils.profile_query; cur_frm.fields_dict.allocated_to.get_query = erpnext.utils.profile_query;
cur_frm.fields_dict.customer.get_query = erpnext.utils.customer_query; cur_frm.fields_dict.customer.get_query = erpnext.utils.customer_query;

View File

@@ -29,6 +29,21 @@ class DocType(TransactionBase):
def autoname(self): def autoname(self):
self.doc.name = make_autoname(self.doc.naming_series+'.#####') self.doc.name = make_autoname(self.doc.naming_series+'.#####')
def onload(self):
self.add_communication_list()
def add_communication_list(self):
# remove communications if present
self.doclist = webnotes.doclist(self.doclist).get({"doctype": ["!=", "Communcation"]})
comm_list = webnotes.conn.sql("""select * from tabCommunication
where support_ticket=%s order by modified desc limit 20""", self.doc.name, as_dict=1)
[d.update({"doctype":"Communication"}) for d in comm_list]
self.doclist.extend(webnotes.doclist([webnotes.doc(fielddata=d) \
for d in comm_list]))
def send_response(self): def send_response(self):
""" """
Adds a new response to the ticket and sends an email to the sender Adds a new response to the ticket and sends an email to the sender
@@ -61,11 +76,12 @@ class DocType(TransactionBase):
self.doc.new_response = None self.doc.new_response = None
webnotes.conn.set(self.doc, 'status', 'Waiting for Customer') webnotes.conn.set(self.doc, 'status', 'Waiting for Customer')
self.make_response_record(response) self.make_response_record(response)
self.add_communication_list()
def last_response(self): def last_response(self):
"""return last response""" """return last response"""
tmp = webnotes.conn.sql("""select mail from `tabSupport Ticket Response` tmp = webnotes.conn.sql("""select content from `tabCommunication`
where parent = %s order by creation desc limit 1 where support_ticket = %s order by creation desc limit 1
""", self.doc.name) """, self.doc.name)
if not tmp: if not tmp:
@@ -84,17 +100,21 @@ class DocType(TransactionBase):
def make_response_record(self, response, from_email = None, content_type='text/plain'): def make_response_record(self, response, from_email = None, content_type='text/plain'):
""" """
Creates a new Support Ticket Response record Creates a new Communication record
""" """
# add to Support Ticket Response # add to Communication
from webnotes.model.doc import Document import email.utils
d = Document('Support Ticket Response')
d.from_email = from_email or webnotes.user.name d = webnotes.doc('Communication')
d.parent = self.doc.name d.naming_series = "COMM-"
d.parenttype = "Support Ticket" d.subject = self.doc.subject
d.parentfield = "responses" d.email_address = from_email or webnotes.user.name
d.mail = response email_addr = email.utils.parseaddr(d.email_address)[1]
d.content_type = content_type d.contact = webnotes.conn.get_value("Contact", {"email_id": email_addr}, "name") or None
d.lead = webnotes.conn.get_value("Lead", {"email_id": email_addr}, "name") or None
d.support_ticket = self.doc.name
d.content = response
d.communication_medium = "Email"
d.save(1) d.save(1)
def close_ticket(self): def close_ticket(self):

View File

@@ -1,411 +1,335 @@
# DocType, Support Ticket
[ [
# These values are common in all dictionaries
{ {
'creation': '2012-04-02 16:02:42', "owner": "Administrator",
'docstatus': 0, "docstatus": 0,
'modified': '2012-05-02 11:33:24', "creation": "2012-11-02 17:17:05",
'modified_by': u'Administrator', "modified_by": "Administrator",
'owner': u'Administrator' "modified": "2012-11-24 16:41:45"
}, },
# These values are common for all DocType
{ {
'_last_update': u'1311584009', "allow_attach": 1,
'allow_attach': 1, "default_print_format": "Standard",
'allow_trash': 1, "search_fields": "status,customer,allocated_to,subject,raised_by",
'colour': u'White:FFF', "module": "Support",
'default_print_format': u'Standard', "doctype": "DocType",
'doctype': 'DocType', "name": "__common__"
'module': u'Support',
'name': '__common__',
'search_fields': u'status,customer,allocated_to,subject,raised_by',
'section_style': u'Tray',
'server_code_error': u' ',
'show_in_menu': 0,
'subject': u'%(subject)s',
'tag_fields': u'status,allocated_to',
'version': 1
}, },
# These values are common for all DocField
{ {
'doctype': u'DocField', "name": "__common__",
'name': '__common__', "parent": "Support Ticket",
'parent': u'Support Ticket', "doctype": "DocField",
'parentfield': u'fields', "parenttype": "DocType",
'parenttype': u'DocType' "parentfield": "fields"
}, },
# These values are common for all DocPerm
{ {
'amend': 0, "name": "__common__",
'cancel': 0, "parent": "Support Ticket",
'doctype': u'DocPerm', "amend": 0,
'name': '__common__', "submit": 0,
'parent': u'Support Ticket', "doctype": "DocPerm",
'parentfield': u'permissions', "read": 1,
'parenttype': u'DocType', "parenttype": "DocType",
'read': 1, "parentfield": "permissions"
'submit': 0
}, },
# DocType, Support Ticket
{ {
'doctype': 'DocType', "name": "Support Ticket",
'name': u'Support Ticket' "doctype": "DocType"
}, },
# DocPerm
{ {
'create': 1, "print_hide": 1,
'doctype': u'DocPerm', "no_copy": 1,
'permlevel': 0, "search_index": 0,
'role': u'Guest', "doctype": "DocField",
'write': 1 "label": "Naming Series",
"options": "SUP",
"fieldname": "naming_series",
"fieldtype": "Select",
"reqd": 0,
"hidden": 0,
"permlevel": 0
}, },
# DocPerm
{ {
'create': 1, "permlevel": 1,
'doctype': u'DocPerm', "no_copy": 1,
'permlevel': 0, "oldfieldtype": "Select",
'role': u'Customer', "colour": "White:FFF",
'write': 1 "doctype": "DocField",
"label": "Status",
"oldfieldname": "status",
"default": "Open",
"fieldname": "status",
"fieldtype": "Select",
"search_index": 1,
"reqd": 0,
"options": "\nOpen\nTo Reply\nWaiting for Customer\nHold\nClosed",
"in_filter": 0
}, },
# DocPerm
{ {
'create': 1, "doctype": "DocField",
'doctype': u'DocPerm', "label": "Subject",
'permlevel': 0, "fieldname": "subject",
'role': u'Support Team', "fieldtype": "Text",
'write': 1 "reqd": 1,
"permlevel": 0,
"in_filter": 1
}, },
# DocPerm
{ {
'create': 0, "oldfieldtype": "Data",
'doctype': u'DocPerm', "doctype": "DocField",
'permlevel': 1, "label": "Raised By (Email)",
'role': u'Support Team', "oldfieldname": "raised_by",
'write': 1 "fieldname": "raised_by",
"fieldtype": "Data",
"depends_on": "eval:doc.__islocal",
"reqd": 1,
"permlevel": 0,
"in_filter": 1
}, },
# DocPerm
{ {
'create': 0, "oldfieldtype": "Text",
'doctype': u'DocPerm', "doctype": "DocField",
'permlevel': 2, "label": "Description",
'role': u'Support Team', "oldfieldname": "problem_description",
'write': 0 "fieldname": "description",
"fieldtype": "Text",
"depends_on": "eval:doc.__islocal",
"reqd": 0,
"permlevel": 0
}, },
# DocField
{ {
'doctype': u'DocField', "depends_on": "eval:!doc.__islocal",
'fieldname': u'naming_series', "doctype": "DocField",
'fieldtype': u'Select', "label": "New Response",
'hidden': 0, "fieldname": "new_response",
'label': u'Naming Series', "fieldtype": "Text",
'no_copy': 1, "permlevel": 0
'options': u'SUP',
'permlevel': 0,
'print_hide': 1,
'reqd': 0,
'search_index': 0
}, },
# DocField
{ {
'colour': u'White:FFF', "depends_on": "eval:!doc.__islocal",
'default': u'Open', "doctype": "DocField",
'doctype': u'DocField', "label": "Send",
'fieldname': u'status', "fieldname": "send",
'fieldtype': u'Select', "fieldtype": "Button",
'in_filter': 0, "permlevel": 0
'label': u'Status',
'no_copy': 1,
'oldfieldname': u'status',
'oldfieldtype': u'Select',
'options': u'\nOpen\nTo Reply\nWaiting for Customer\nHold\nClosed',
'permlevel': 1,
'reqd': 0,
'search_index': 1
}, },
# DocField
{ {
'doctype': u'DocField', "depends_on": "eval:!doc.__islocal",
'fieldname': u'subject', "doctype": "DocField",
'fieldtype': u'Text', "label": "Thread HTML",
'in_filter': 1, "fieldname": "thread_html",
'label': u'Subject', "fieldtype": "HTML",
'permlevel': 0, "permlevel": 1
'reqd': 1
}, },
# DocField
{ {
'depends_on': u'eval:doc.__islocal', "colour": "White:FFF",
'doctype': u'DocField', "doctype": "DocField",
'fieldname': u'raised_by', "label": "Additional Info",
'fieldtype': u'Data', "fieldname": "additional_info",
'in_filter': 1, "fieldtype": "Section Break",
'label': u'Raised By (Email)', "permlevel": 1
'oldfieldname': u'raised_by',
'oldfieldtype': u'Data',
'permlevel': 0,
'reqd': 1
}, },
# DocField
{ {
'depends_on': u'eval:doc.__islocal', "oldfieldtype": "Column Break",
'doctype': u'DocField', "doctype": "DocField",
'fieldname': u'description', "width": "50%",
'fieldtype': u'Text', "fieldname": "column_break0",
'label': u'Description', "fieldtype": "Column Break",
'oldfieldname': u'problem_description', "depends_on": "eval:!doc.__islocal",
'oldfieldtype': u'Text', "permlevel": 1
'permlevel': 0,
'reqd': 0
}, },
# DocField
{ {
'depends_on': u'eval:!doc.__islocal', "print_hide": 1,
'doctype': u'DocField', "oldfieldtype": "Link",
'fieldname': u'thread_html', "colour": "White:FFF",
'fieldtype': u'HTML', "doctype": "DocField",
'label': u'Thread HTML', "label": "Customer",
'permlevel': 1 "oldfieldname": "customer",
"permlevel": 1,
"trigger": "Client",
"fieldname": "customer",
"fieldtype": "Link",
"search_index": 1,
"reqd": 0,
"options": "Customer",
"in_filter": 1
}, },
# DocField
{ {
'depends_on': u'eval:!doc.__islocal', "oldfieldtype": "Data",
'doctype': u'DocField', "doctype": "DocField",
'fieldname': u'new_response', "label": "Customer Name",
'fieldtype': u'Text', "oldfieldname": "customer_name",
'label': u'New Response', "fieldname": "customer_name",
'permlevel': 0 "fieldtype": "Data",
"search_index": 0,
"reqd": 0,
"permlevel": 2,
"in_filter": 1
}, },
# DocField
{ {
'depends_on': u'eval:!doc.__islocal', "doctype": "DocField",
'doctype': u'DocField', "label": "Address",
'fieldname': u'send', "fieldname": "address_display",
'fieldtype': u'Button', "fieldtype": "Small Text",
'label': u'Send', "permlevel": 2
'permlevel': 0
}, },
# DocField
{ {
'colour': u'White:FFF', "doctype": "DocField",
'doctype': u'DocField', "label": "Contact Name",
'fieldname': u'additional_info', "fieldname": "contact_display",
'fieldtype': u'Section Break', "fieldtype": "Data",
'label': u'Additional Info', "permlevel": 2
'permlevel': 1
}, },
# DocField
{ {
'depends_on': u'eval:!doc.__islocal', "doctype": "DocField",
'doctype': u'DocField', "label": "Mobile No",
'fieldname': u'column_break0', "fieldname": "contact_mobile",
'fieldtype': u'Column Break', "fieldtype": "Data",
'oldfieldtype': u'Column Break', "permlevel": 2
'permlevel': 1,
'width': u'50%'
}, },
# DocField
{ {
'colour': u'White:FFF', "oldfieldtype": "Data",
'doctype': u'DocField', "doctype": "DocField",
'fieldname': u'customer', "label": "Contact Email",
'fieldtype': u'Link', "oldfieldname": "contact_no",
'in_filter': 1, "fieldname": "contact_email",
'label': u'Customer', "fieldtype": "Data",
'oldfieldname': u'customer', "permlevel": 2
'oldfieldtype': u'Link',
'options': u'Customer',
'permlevel': 1,
'print_hide': 1,
'reqd': 0,
'search_index': 1,
'trigger': u'Client'
}, },
# DocField
{ {
'doctype': u'DocField', "default": "Today",
'fieldname': u'customer_name', "oldfieldtype": "Date",
'fieldtype': u'Data', "doctype": "DocField",
'in_filter': 1, "label": "Opening Date",
'label': u'Customer Name', "oldfieldname": "opening_date",
'oldfieldname': u'customer_name', "no_copy": 1,
'oldfieldtype': u'Data', "fieldname": "opening_date",
'permlevel': 2, "fieldtype": "Date",
'reqd': 0, "permlevel": 1
'search_index': 0
}, },
# DocField
{ {
'doctype': u'DocField', "no_copy": 1,
'fieldname': u'address_display', "oldfieldtype": "Time",
'fieldtype': u'Small Text', "doctype": "DocField",
'label': u'Address', "label": "Opening Time",
'permlevel': 2 "oldfieldname": "opening_time",
"fieldname": "opening_time",
"fieldtype": "Time",
"permlevel": 1
}, },
# DocField
{ {
'doctype': u'DocField', "oldfieldtype": "Column Break",
'fieldname': u'contact_display', "doctype": "DocField",
'fieldtype': u'Data', "fieldname": "column_break1",
'label': u'Contact Name', "fieldtype": "Column Break",
'permlevel': 2 "depends_on": "eval:!doc.__islocal",
"permlevel": 1
}, },
# DocField
{ {
'doctype': u'DocField', "depends_on": "eval:!doc.__islocal",
'fieldname': u'contact_mobile', "search_index": 1,
'fieldtype': u'Data', "colour": "White:FFF",
'label': u'Mobile No', "doctype": "DocField",
'permlevel': 2 "label": "Allocated To",
"oldfieldname": "allocated_to",
"permlevel": 1,
"fieldname": "allocated_to",
"fieldtype": "Link",
"oldfieldtype": "Link",
"options": "Profile",
"in_filter": 1
}, },
# DocField
{ {
'doctype': u'DocField', "no_copy": 1,
'fieldname': u'contact_email', "oldfieldtype": "Text",
'fieldtype': u'Data', "doctype": "DocField",
'label': u'Contact Email', "label": "Resolution Details",
'oldfieldname': u'contact_no', "oldfieldname": "resolution_details",
'oldfieldtype': u'Data', "fieldname": "resolution_details",
'permlevel': 2 "fieldtype": "Text",
"depends_on": "eval:!doc.__islocal",
"permlevel": 1
}, },
# DocField
{ {
'default': u'Today', "depends_on": "eval:!doc.__islocal",
'doctype': u'DocField', "no_copy": 1,
'fieldname': u'opening_date', "search_index": 0,
'fieldtype': u'Date', "colour": "White:FFF",
'label': u'Opening Date', "doctype": "DocField",
'no_copy': 1, "label": "Resolution Date",
'oldfieldname': u'opening_date', "oldfieldname": "resolution_date",
'oldfieldtype': u'Date', "fieldname": "resolution_date",
'permlevel': 1 "fieldtype": "Date",
"oldfieldtype": "Date",
"permlevel": 1,
"in_filter": 0
}, },
# DocField
{ {
'doctype': u'DocField', "oldfieldtype": "Time",
'fieldname': u'opening_time', "doctype": "DocField",
'fieldtype': u'Time', "label": "Resolution Time",
'label': u'Opening Time', "oldfieldname": "resolution_time",
'no_copy': 1, "fieldname": "resolution_time",
'oldfieldname': u'opening_time', "fieldtype": "Time",
'oldfieldtype': u'Time', "depends_on": "eval:!doc.__islocal",
'permlevel': 1 "permlevel": 1
}, },
# DocField
{ {
'depends_on': u'eval:!doc.__islocal', "colour": "White:FFF",
'doctype': u'DocField', "doctype": "DocField",
'fieldname': u'column_break1', "label": "Content Type",
'fieldtype': u'Column Break', "fieldname": "content_type",
'oldfieldtype': u'Column Break', "fieldtype": "Data",
'permlevel': 1 "hidden": 1,
"permlevel": 0
}, },
# DocField
{ {
'colour': u'White:FFF', "print_hide": 1,
'depends_on': u'eval:!doc.__islocal', "no_copy": 1,
'doctype': u'DocField', "doctype": "DocField",
'fieldname': u'allocated_to', "label": "File List",
'fieldtype': u'Link', "fieldname": "file_list",
'in_filter': 1, "fieldtype": "Text",
'label': u'Allocated To', "hidden": 1,
'oldfieldname': u'allocated_to', "permlevel": 0
'oldfieldtype': u'Link',
'options': u'Profile',
'permlevel': 1,
'search_index': 1
}, },
# DocField
{ {
'depends_on': u'eval:!doc.__islocal', "create": 1,
'doctype': u'DocField', "doctype": "DocPerm",
'fieldname': u'resolution_details', "write": 1,
'fieldtype': u'Text', "role": "Guest",
'label': u'Resolution Details', "cancel": 0,
'no_copy': 1, "permlevel": 0
'oldfieldname': u'resolution_details',
'oldfieldtype': u'Text',
'permlevel': 1
}, },
# DocField
{ {
'colour': u'White:FFF', "create": 1,
'depends_on': u'eval:!doc.__islocal', "doctype": "DocPerm",
'doctype': u'DocField', "write": 1,
'fieldname': u'resolution_date', "role": "Customer",
'fieldtype': u'Date', "cancel": 0,
'in_filter': 0, "permlevel": 0
'label': u'Resolution Date',
'no_copy': 1,
'oldfieldname': u'resolution_date',
'oldfieldtype': u'Date',
'permlevel': 1,
'search_index': 0
}, },
# DocField
{ {
'depends_on': u'eval:!doc.__islocal', "create": 1,
'doctype': u'DocField', "doctype": "DocPerm",
'fieldname': u'resolution_time', "write": 1,
'fieldtype': u'Time', "role": "Support Team",
'label': u'Resolution Time', "cancel": 1,
'oldfieldname': u'resolution_time', "permlevel": 0
'oldfieldtype': u'Time',
'permlevel': 1
}, },
# DocField
{ {
'colour': u'White:FFF', "create": 0,
'doctype': u'DocField', "doctype": "DocPerm",
'fieldname': u'content_type', "write": 1,
'fieldtype': u'Data', "role": "Support Team",
'hidden': 1, "cancel": 0,
'label': u'Content Type', "permlevel": 1
'permlevel': 0
}, },
# DocField
{ {
'doctype': u'DocField', "create": 0,
'fieldname': u'file_list', "doctype": "DocPerm",
'fieldtype': u'Text', "write": 0,
'hidden': 1, "role": "Support Team",
'label': u'File List', "cancel": 0,
'no_copy': 1, "permlevel": 2
'permlevel': 0,
'print_hide': 1
} }
] ]

View File

@@ -1 +0,0 @@
from __future__ import unicode_literals

View File

@@ -1,22 +0,0 @@
# ERPNext - web based ERP (http://erpnext.com)
# Copyright (C) 2012 Web Notes Technologies Pvt Ltd
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
from __future__ import unicode_literals
import webnotes
class DocType:
def __init__(self, d, dl):
self.doc, self.doclist = d, dl

View File

@@ -1,64 +0,0 @@
# DocType, Support Ticket Response
[
# These values are common in all dictionaries
{
'creation': '2012-03-27 14:36:44',
'docstatus': 0,
'modified': '2012-03-27 14:36:44',
'modified_by': u'Administrator',
'owner': u'Administrator'
},
# These values are common for all DocType
{
'colour': u'White:FFF',
'doctype': 'DocType',
'istable': 1,
'module': u'Support',
'name': '__common__',
'section_style': u'Simple',
'show_in_menu': 0,
'version': 4
},
# These values are common for all DocField
{
'doctype': u'DocField',
'name': '__common__',
'parent': u'Support Ticket Response',
'parentfield': u'fields',
'parenttype': u'DocType',
'permlevel': 0
},
# DocType, Support Ticket Response
{
'doctype': 'DocType',
'name': u'Support Ticket Response'
},
# DocField
{
'doctype': u'DocField',
'fieldname': u'mail',
'fieldtype': u'Text',
'label': u'Mail'
},
# DocField
{
'doctype': u'DocField',
'fieldname': u'from_email',
'fieldtype': u'Data',
'label': u'From Email'
},
# DocField
{
'doctype': u'DocField',
'fieldname': u'content_type',
'fieldtype': u'Data',
'label': u'Content Type'
}
]

View File

@@ -1,257 +1,301 @@
# DocType, Contact
[ [
# These values are common in all dictionaries
{ {
'creation': '2012-07-03 14:22:38', "owner": "Administrator",
'docstatus': 0, "docstatus": 0,
'modified': '2012-08-02 13:16:48', "creation": "2012-08-06 11:15:46",
'modified_by': u'Administrator', "modified_by": "Administrator",
'owner': u'Administrator' "modified": "2012-11-24 15:10:53"
}, },
# These values are common for all DocType
{ {
'_last_update': u'1327314958', "in_create": 0,
'allow_trash': 1, "default_print_format": "Standard",
'colour': u'White:FFF', "doctype": "DocType",
'default_print_format': u'Standard', "module": "Utilities",
'doctype': 'DocType', "in_dialog": 1,
'document_type': u'Master', "document_type": "Master",
'in_create': 0, "name": "__common__"
'in_dialog': 1,
'module': u'Utilities',
'name': '__common__',
'section_style': u'Simple',
'server_code_error': u' ',
'show_in_menu': 0,
'subject': u'%(first_name)s %(last_name)s - Email: %(email_id)s | Contact: %(phone)s | Mobile: %(mobile_no)s',
'version': 1
}, },
# These values are common for all DocField
{ {
'doctype': u'DocField', "name": "__common__",
'name': '__common__', "parent": "Contact",
'parent': u'Contact', "doctype": "DocField",
'parentfield': u'fields', "parenttype": "DocType",
'parenttype': u'DocType' "parentfield": "fields"
}, },
# DocType, Contact
{ {
'doctype': 'DocType', "name": "__common__",
'name': u'Contact' "parent": "Contact",
"read": 1,
"doctype": "DocPerm",
"parenttype": "DocType",
"parentfield": "permissions"
}, },
# DocField
{ {
'colour': u'White:FFF', "name": "Contact",
'doctype': u'DocField', "doctype": "DocType"
'fieldname': u'contact_details',
'fieldtype': u'Section Break',
'label': u'Contact Details',
'oldfieldtype': u'Section Break',
'permlevel': 0
}, },
# DocField
{ {
'doctype': u'DocField', "oldfieldtype": "Section Break",
'fieldname': u'column_break0', "colour": "White:FFF",
'fieldtype': u'Column Break', "doctype": "DocField",
'oldfieldtype': u'Column Break', "label": "Contact Details",
'permlevel': 0, "fieldname": "contact_details",
'width': u'50%' "fieldtype": "Section Break",
"permlevel": 0
}, },
# DocField
{ {
'doctype': u'DocField', "oldfieldtype": "Column Break",
'fieldname': u'first_name', "doctype": "DocField",
'fieldtype': u'Data', "width": "50%",
'label': u'First Name', "fieldname": "column_break0",
'oldfieldname': u'first_name', "fieldtype": "Column Break",
'oldfieldtype': u'Data', "permlevel": 0
'permlevel': 0,
'reqd': 1
}, },
# DocField
{ {
'doctype': u'DocField', "oldfieldtype": "Data",
'fieldname': u'last_name', "doctype": "DocField",
'fieldtype': u'Data', "label": "First Name",
'label': u'Last Name', "oldfieldname": "first_name",
'oldfieldname': u'last_name', "fieldname": "first_name",
'oldfieldtype': u'Data', "fieldtype": "Data",
'permlevel': 0 "reqd": 1,
"permlevel": 0
}, },
# DocField
{ {
'colour': u'White:FFF', "oldfieldtype": "Data",
'depends_on': u'eval:!doc.supplier && !doc.sales_partner', "doctype": "DocField",
'doctype': u'DocField', "label": "Last Name",
'fieldname': u'customer', "oldfieldname": "last_name",
'fieldtype': u'Link', "fieldname": "last_name",
'label': u'Customer', "fieldtype": "Data",
'oldfieldname': u'customer', "permlevel": 0
'oldfieldtype': u'Link',
'options': u'Customer',
'permlevel': 0,
'print_hide': 0,
'trigger': u'Client'
}, },
# DocField
{ {
'colour': u'White:FFF', "print_hide": 0,
'depends_on': u'eval:!doc.supplier && !doc.sales_partner', "oldfieldtype": "Link",
'doctype': u'DocField', "colour": "White:FFF",
'fieldname': u'customer_name', "doctype": "DocField",
'fieldtype': u'Data', "label": "Customer",
'label': u'Customer Name', "oldfieldname": "customer",
'permlevel': 1 "permlevel": 0,
"trigger": "Client",
"fieldname": "customer",
"fieldtype": "Link",
"depends_on": "eval:!doc.supplier && !doc.sales_partner",
"options": "Customer"
}, },
# DocField
{ {
'colour': u'White:FFF', "depends_on": "eval:!doc.supplier && !doc.sales_partner",
'depends_on': u'eval:!doc.customer && !doc.sales_partner', "colour": "White:FFF",
'doctype': u'DocField', "doctype": "DocField",
'fieldname': u'supplier', "label": "Customer Name",
'fieldtype': u'Link', "fieldname": "customer_name",
'label': u'Supplier', "fieldtype": "Data",
'options': u'Supplier', "permlevel": 1
'permlevel': 0,
'trigger': u'Client'
}, },
# DocField
{ {
'allow_on_submit': 0, "depends_on": "eval:!doc.customer && !doc.sales_partner",
'colour': u'White:FFF', "colour": "White:FFF",
'depends_on': u'eval:!doc.customer && !doc.sales_partner', "doctype": "DocField",
'doctype': u'DocField', "label": "Supplier",
'fieldname': u'supplier_name', "trigger": "Client",
'fieldtype': u'Data', "fieldname": "supplier",
'label': u'Supplier Name', "fieldtype": "Link",
'permlevel': 1 "options": "Supplier",
"permlevel": 0
}, },
# DocField
{ {
'colour': u'White:FFF', "depends_on": "eval:!doc.customer && !doc.sales_partner",
'depends_on': u'eval:!doc.customer && !doc.supplier', "colour": "White:FFF",
'doctype': u'DocField', "allow_on_submit": 0,
'fieldname': u'sales_partner', "doctype": "DocField",
'fieldtype': u'Link', "label": "Supplier Name",
'label': u'Sales Partner', "fieldname": "supplier_name",
'options': u'Sales Partner', "fieldtype": "Data",
'permlevel': 0 "permlevel": 1
}, },
# DocField
{ {
'colour': u'White:FFF', "depends_on": "eval:!doc.customer && !doc.supplier",
'default': u'0', "colour": "White:FFF",
'depends_on': u'eval:(doc.customer || doc.supplier || doc.sales_partner)', "doctype": "DocField",
'doctype': u'DocField', "label": "Sales Partner",
'fieldname': u'is_primary_contact', "options": "Sales Partner",
'fieldtype': u'Check', "fieldname": "sales_partner",
'label': u'Is Primary Contact', "fieldtype": "Link",
'oldfieldname': u'is_primary_contact', "permlevel": 0
'oldfieldtype': u'Select',
'permlevel': 0
}, },
# DocField
{ {
'doctype': u'DocField', "default": "0",
'fieldname': u'column_break1', "oldfieldtype": "Select",
'fieldtype': u'Column Break', "colour": "White:FFF",
'oldfieldtype': u'Column Break', "doctype": "DocField",
'permlevel': 0, "label": "Is Primary Contact",
'width': u'50%' "oldfieldname": "is_primary_contact",
"fieldname": "is_primary_contact",
"fieldtype": "Check",
"depends_on": "eval:(doc.customer || doc.supplier || doc.sales_partner)",
"permlevel": 0
}, },
# DocField
{ {
'doctype': u'DocField', "oldfieldtype": "Column Break",
'fieldname': u'email_id', "doctype": "DocField",
'fieldtype': u'Data', "width": "50%",
'label': u'Email Id', "fieldname": "column_break1",
'oldfieldname': u'email_id', "fieldtype": "Column Break",
'oldfieldtype': u'Data', "permlevel": 0
'permlevel': 0,
'reqd': 1
}, },
# DocField
{ {
'doctype': u'DocField', "oldfieldtype": "Data",
'fieldname': u'phone', "colour": "White:FFF",
'fieldtype': u'Data', "doctype": "DocField",
'label': u'Phone', "label": "Email Id",
'oldfieldname': u'contact_no', "oldfieldname": "email_id",
'oldfieldtype': u'Data', "fieldname": "email_id",
'permlevel': 0, "fieldtype": "Data",
'reqd': 1 "search_index": 1,
"reqd": 1,
"permlevel": 0
}, },
# DocField
{ {
'doctype': u'DocField', "oldfieldtype": "Data",
'fieldname': u'mobile_no', "doctype": "DocField",
'fieldtype': u'Data', "label": "Phone",
'label': u'Mobile No', "oldfieldname": "contact_no",
'oldfieldname': u'mobile_no', "fieldname": "phone",
'oldfieldtype': u'Data', "fieldtype": "Data",
'permlevel': 0 "reqd": 1,
"permlevel": 0
}, },
# DocField
{ {
'colour': u'White:FFF', "oldfieldtype": "Data",
'description': u'Enter department to which this Contact belongs', "doctype": "DocField",
'doctype': u'DocField', "label": "Mobile No",
'fieldname': u'department', "oldfieldname": "mobile_no",
'fieldtype': u'Data', "fieldname": "mobile_no",
'label': u'Department', "fieldtype": "Data",
'options': u'Suggest', "permlevel": 0
'permlevel': 0
}, },
# DocField
{ {
'colour': u'White:FFF', "description": "Enter department to which this Contact belongs",
'description': u'Enter designation of this Contact', "colour": "White:FFF",
'doctype': u'DocField', "doctype": "DocField",
'fieldname': u'designation', "label": "Department",
'fieldtype': u'Data', "options": "Suggest",
'label': u'Designation', "fieldname": "department",
'options': u'Suggest', "fieldtype": "Data",
'permlevel': 0 "permlevel": 0
}, },
# DocField
{ {
'doctype': u'DocField', "description": "Enter designation of this Contact",
'fieldname': u'unsubscribed', "colour": "White:FFF",
'fieldtype': u'Check', "doctype": "DocField",
'label': u'Unsubscribed', "label": "Designation",
'permlevel': 0 "options": "Suggest",
"fieldname": "designation",
"fieldtype": "Data",
"permlevel": 0
}, },
# DocField
{ {
'doctype': u'DocField', "doctype": "DocField",
'fieldname': u'trash_reason', "label": "Unsubscribed",
'fieldtype': u'Small Text', "fieldname": "unsubscribed",
'label': u'Trash Reason', "fieldtype": "Check",
'oldfieldname': u'trash_reason', "permlevel": 0
'oldfieldtype': u'Small Text', },
'permlevel': 1 {
"oldfieldtype": "Small Text",
"doctype": "DocField",
"label": "Trash Reason",
"oldfieldname": "trash_reason",
"fieldname": "trash_reason",
"fieldtype": "Small Text",
"permlevel": 1
},
{
"create": 1,
"doctype": "DocPerm",
"write": 1,
"role": "System Manager",
"cancel": 1,
"permlevel": 0
},
{
"amend": 0,
"create": 1,
"doctype": "DocPerm",
"submit": 0,
"write": 1,
"role": "Sales Master Manager",
"cancel": 1,
"permlevel": 0
},
{
"create": 1,
"doctype": "DocPerm",
"write": 1,
"role": "Purchase Master Manager",
"cancel": 1,
"permlevel": 0
},
{
"create": 1,
"doctype": "DocPerm",
"write": 1,
"role": "Sales Manager",
"permlevel": 0
},
{
"create": 1,
"doctype": "DocPerm",
"write": 1,
"role": "Purchase Manager",
"permlevel": 0
},
{
"create": 1,
"doctype": "DocPerm",
"write": 1,
"role": "Maintenance Manager",
"permlevel": 0
},
{
"create": 1,
"doctype": "DocPerm",
"write": 1,
"role": "Accounts Manager",
"permlevel": 0
},
{
"create": 1,
"doctype": "DocPerm",
"write": 1,
"role": "Sales User",
"permlevel": 0
},
{
"create": 1,
"doctype": "DocPerm",
"write": 1,
"role": "Purchase User",
"permlevel": 0
},
{
"create": 1,
"doctype": "DocPerm",
"write": 1,
"role": "Maintenance User",
"permlevel": 0
},
{
"create": 1,
"doctype": "DocPerm",
"write": 1,
"role": "Accounts User",
"permlevel": 0
},
{
"doctype": "DocPerm",
"role": "All",
"permlevel": 1
} }
] ]

View File

@@ -13,7 +13,7 @@
<button class="btn btn-small" onclick="erpnext.calendar.refresh('Month')"> <button class="btn btn-small" onclick="erpnext.calendar.refresh('Month')">
Month View Month View
</button> </button>
<button class="btn btn-small" onclick="erpnext.calendar.refresh()"> <button class="btn btn-small" onclick="erpnext.calendar.refresh(null, true)">
<i class="icon-refresh"></i> Refresh <i class="icon-refresh"></i> Refresh
</button> </button>
</div> </div>

View File

@@ -241,9 +241,19 @@ Calendar.prototype.set_event = function(ev) {
//------------------------------------------------------ //------------------------------------------------------
Calendar.prototype.refresh = function(viewtype){//Sets the viewtype of the Calendar and Calls the View class based on the viewtype Calendar.prototype.clear = function() {
this.events = {};
this.events_by_name = {};
locals.Event = {};
}
Calendar.prototype.refresh = function(viewtype, clear_events){//Sets the viewtype of the Calendar and Calls the View class based on the viewtype
if(viewtype) if(viewtype)
this.viewtype = viewtype; this.viewtype = viewtype;
if(clear_events)
this.clear();
// switch view if reqd // switch view if reqd
if(this.cur_view.viewtype!=this.viewtype) { if(this.cur_view.viewtype!=this.viewtype) {
this.cur_view.hide(); this.cur_view.hide();
@@ -252,6 +262,7 @@ Calendar.prototype.refresh = function(viewtype){//Sets the viewtype of the Calen
this.cur_view.show(); this.cur_view.show();
} }
else{ else{
this.cur_view.get_events();
this.cur_view.refresh(this); this.cur_view.refresh(this);
} }
} }