mirror of
https://github.com/frappe/erpnext.git
synced 2026-05-27 08:54:45 +00:00
Merge branch 'master' of github.com:webnotes/erpnext into cms2
This commit is contained in:
6
erpnext/patches/june_2012/series_unique_patch.py
Normal file
6
erpnext/patches/june_2012/series_unique_patch.py
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
def execute():
|
||||||
|
"""add unique constraint to series table's name column"""
|
||||||
|
import webnotes
|
||||||
|
webnotes.conn.commit()
|
||||||
|
webnotes.conn.sql("alter table `tabSeries` add unique (name)")
|
||||||
|
webnotes.conn.begin()
|
||||||
15
erpnext/patches/june_2012/support_ticket_autoreply.py
Normal file
15
erpnext/patches/june_2012/support_ticket_autoreply.py
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
def execute():
|
||||||
|
"""New Send Autoreply checkbox in Email Settings"""
|
||||||
|
import webnotes
|
||||||
|
import webnotes.utils
|
||||||
|
|
||||||
|
import webnotes.model.sync
|
||||||
|
webnotes.conn.commit()
|
||||||
|
webnotes.model.sync.sync('setup', 'email_settings')
|
||||||
|
webnotes.conn.begin()
|
||||||
|
|
||||||
|
sync_support_mails = webnotes.utils.cint(webnotes.conn.get_value('Email Settings',
|
||||||
|
None, 'sync_support_mails'))
|
||||||
|
|
||||||
|
if sync_support_mails:
|
||||||
|
webnotes.conn.set_value('Email Settings', None, 'send_autoreply', 1)
|
||||||
@@ -432,4 +432,14 @@ patch_list = [
|
|||||||
'patch_file': 'reports_list_permission',
|
'patch_file': 'reports_list_permission',
|
||||||
'description': 'allow read permission to all for report list'
|
'description': 'allow read permission to all for report list'
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
'patch_module': 'patches.june_2012',
|
||||||
|
'patch_file': 'support_ticket_autoreply',
|
||||||
|
'description': 'New Send Autoreply checkbox in Email Settings'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
'patch_module': 'patches.june_2012',
|
||||||
|
'patch_file': 'series_unique_patch',
|
||||||
|
'description': "add unique constraint to series table's name column"
|
||||||
|
},
|
||||||
]
|
]
|
||||||
@@ -41,7 +41,7 @@ report.get_query = function() {
|
|||||||
date_fld = 'transaction_date';
|
date_fld = 'transaction_date';
|
||||||
if(based_on == 'Sales Invoice') {
|
if(based_on == 'Sales Invoice') {
|
||||||
based_on = 'Sales Invoice';
|
based_on = 'Sales Invoice';
|
||||||
date_fld = 'voucher_date';
|
date_fld = 'posting_date';
|
||||||
}
|
}
|
||||||
|
|
||||||
sp_cond = '';
|
sp_cond = '';
|
||||||
|
|||||||
@@ -45,28 +45,33 @@ class DocType:
|
|||||||
out_email.port = cint(self.doc.mail_port)
|
out_email.port = cint(self.doc.mail_port)
|
||||||
out_email.use_ssl = self.doc.use_ssl
|
out_email.use_ssl = self.doc.use_ssl
|
||||||
try:
|
try:
|
||||||
|
err_msg = "Login Id or Mail Password missing. Please enter and try again."
|
||||||
|
if not (self.doc.mail_login and self.doc.mail_password):
|
||||||
|
raise AttributeError, err_msg
|
||||||
out_email.login = self.doc.mail_login.encode('utf-8')
|
out_email.login = self.doc.mail_login.encode('utf-8')
|
||||||
out_email.password = self.doc.mail_password.encode('utf-8')
|
out_email.password = self.doc.mail_password.encode('utf-8')
|
||||||
except AttributeError, e:
|
except AttributeError, e:
|
||||||
webnotes.msgprint('Login Id or Mail Password missing. Please enter and try again.')
|
webnotes.msgprint(err_msg)
|
||||||
webnotes.msgprint(e)
|
raise e
|
||||||
|
|
||||||
try:
|
try:
|
||||||
sess = out_email.smtp_connect()
|
sess = out_email.smtp_connect()
|
||||||
|
|
||||||
try:
|
try:
|
||||||
sess.quit()
|
sess.quit()
|
||||||
except:
|
except:
|
||||||
pass
|
pass
|
||||||
except _socket.error, e:
|
except _socket.error, e:
|
||||||
# Invalid mail server -- due to refusing connection
|
# Invalid mail server -- due to refusing connection
|
||||||
webnotes.msgprint('Invalid Outgoing Mail Server. Please rectify and try again.')
|
webnotes.msgprint('Invalid Outgoing Mail Server or Port. Please rectify and try again.')
|
||||||
webnotes.msgprint(e)
|
raise e
|
||||||
except smtplib.SMTPAuthenticationError, e:
|
except smtplib.SMTPAuthenticationError, e:
|
||||||
webnotes.msgprint('Invalid Login Id or Mail Password. Please rectify and try again.')
|
webnotes.msgprint('Invalid Login Id or Mail Password. Please rectify and try again.')
|
||||||
|
raise e
|
||||||
except smtplib.SMTPException, e:
|
except smtplib.SMTPException, e:
|
||||||
webnotes.msgprint('There is something wrong with your Outgoing Mail Settings. \
|
webnotes.msgprint('There is something wrong with your Outgoing Mail Settings. \
|
||||||
Please contact us at support@erpnext.com')
|
Please contact us at support@erpnext.com')
|
||||||
webnotes.msgprint(e)
|
raise e
|
||||||
|
|
||||||
|
|
||||||
def validate_incoming(self):
|
def validate_incoming(self):
|
||||||
@@ -81,11 +86,14 @@ class DocType:
|
|||||||
inc_email.host = self.doc.support_host.encode('utf-8')
|
inc_email.host = self.doc.support_host.encode('utf-8')
|
||||||
inc_email.use_ssl = self.doc.support_use_ssl
|
inc_email.use_ssl = self.doc.support_use_ssl
|
||||||
try:
|
try:
|
||||||
|
err_msg = 'User Name or Support Password missing. Please enter and try again.'
|
||||||
|
if not (self.doc.support_username and self.doc.support_password):
|
||||||
|
raise AttributeError, err_msg
|
||||||
inc_email.username = self.doc.support_username.encode('utf-8')
|
inc_email.username = self.doc.support_username.encode('utf-8')
|
||||||
inc_email.password = self.doc.support_password.encode('utf-8')
|
inc_email.password = self.doc.support_password.encode('utf-8')
|
||||||
except AttributeError, e:
|
except AttributeError, e:
|
||||||
webnotes.msgprint('User Name or Support Password missing. Please enter and try again.')
|
webnotes.msgprint(err_msg)
|
||||||
webnotes.msgprint(e)
|
raise e
|
||||||
|
|
||||||
pop_mb = POP3Mailbox(inc_email)
|
pop_mb = POP3Mailbox(inc_email)
|
||||||
|
|
||||||
@@ -94,7 +102,7 @@ class DocType:
|
|||||||
except _socket.error, e:
|
except _socket.error, e:
|
||||||
# Invalid mail server -- due to refusing connection
|
# Invalid mail server -- due to refusing connection
|
||||||
webnotes.msgprint('Invalid POP3 Mail Server. Please rectify and try again.')
|
webnotes.msgprint('Invalid POP3 Mail Server. Please rectify and try again.')
|
||||||
webnotes.msgprint(e)
|
raise e
|
||||||
except poplib.error_proto, e:
|
except poplib.error_proto, e:
|
||||||
webnotes.msgprint('Invalid User Name or Support Password. Please rectify and try again.')
|
webnotes.msgprint('Invalid User Name or Support Password. Please rectify and try again.')
|
||||||
webnotes.msgprint(e)
|
raise e
|
||||||
|
|||||||
@@ -3,9 +3,9 @@
|
|||||||
|
|
||||||
# These values are common in all dictionaries
|
# These values are common in all dictionaries
|
||||||
{
|
{
|
||||||
'creation': '2012-03-27 14:36:20',
|
'creation': '2012-05-15 12:15:01',
|
||||||
'docstatus': 0,
|
'docstatus': 0,
|
||||||
'modified': '2012-03-27 14:36:20',
|
'modified': '2012-06-14 14:47:49',
|
||||||
'modified_by': u'Administrator',
|
'modified_by': u'Administrator',
|
||||||
'owner': u'harshada@webnotestech.com'
|
'owner': u'harshada@webnotestech.com'
|
||||||
},
|
},
|
||||||
@@ -25,7 +25,7 @@
|
|||||||
'name': '__common__',
|
'name': '__common__',
|
||||||
'section_style': u'Simple',
|
'section_style': u'Simple',
|
||||||
'server_code_error': u' ',
|
'server_code_error': u' ',
|
||||||
'version': 35
|
'version': 1
|
||||||
},
|
},
|
||||||
|
|
||||||
# These values are common for all DocField
|
# These values are common for all DocField
|
||||||
@@ -230,6 +230,16 @@
|
|||||||
'label': u'Signature'
|
'label': u'Signature'
|
||||||
},
|
},
|
||||||
|
|
||||||
|
# DocField
|
||||||
|
{
|
||||||
|
'colour': u'White:FFF',
|
||||||
|
'default': u'1',
|
||||||
|
'doctype': u'DocField',
|
||||||
|
'fieldname': u'send_autoreply',
|
||||||
|
'fieldtype': u'Check',
|
||||||
|
'label': u'Send Autoreply'
|
||||||
|
},
|
||||||
|
|
||||||
# DocField
|
# DocField
|
||||||
{
|
{
|
||||||
'colour': u'White:FFF',
|
'colour': u'White:FFF',
|
||||||
@@ -237,6 +247,6 @@
|
|||||||
'doctype': u'DocField',
|
'doctype': u'DocField',
|
||||||
'fieldname': u'support_autoreply',
|
'fieldname': u'support_autoreply',
|
||||||
'fieldtype': u'Text',
|
'fieldtype': u'Text',
|
||||||
'label': u'Autoreply'
|
'label': u'Custom Autoreply Message'
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
@@ -15,7 +15,7 @@
|
|||||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
import webnotes
|
import webnotes
|
||||||
from webnotes.utils import cstr
|
from webnotes.utils import cstr, cint
|
||||||
|
|
||||||
from webnotes.utils.email_lib.receive import POP3Mailbox
|
from webnotes.utils.email_lib.receive import POP3Mailbox
|
||||||
|
|
||||||
@@ -113,7 +113,8 @@ class SupportMailbox(POP3Mailbox):
|
|||||||
update_feed(d, 'on_update')
|
update_feed(d, 'on_update')
|
||||||
|
|
||||||
# send auto reply
|
# send auto reply
|
||||||
self.send_auto_reply(d)
|
if cint(self.email_settings.send_autoreply):
|
||||||
|
self.send_auto_reply(d)
|
||||||
|
|
||||||
webnotes.conn.commit()
|
webnotes.conn.commit()
|
||||||
|
|
||||||
@@ -177,5 +178,6 @@ def get_support_mails():
|
|||||||
Gets new emails from support inbox and updates / creates Support Ticket records
|
Gets new emails from support inbox and updates / creates Support Ticket records
|
||||||
"""
|
"""
|
||||||
import webnotes
|
import webnotes
|
||||||
if webnotes.conn.get_value('Email Settings', None, 'sync_support_mails'):
|
from webnotes.utils import cint
|
||||||
|
if cint(webnotes.conn.get_value('Email Settings', None, 'sync_support_mails')):
|
||||||
SupportMailbox().get_messages()
|
SupportMailbox().get_messages()
|
||||||
@@ -1,18 +1,21 @@
|
|||||||
<div class="layout-wrapper" style="min-height: 300px; background-color: #FFFDC9">
|
<div class="layout-wrapper" style="min-height: 300px; background-color: #FFFDC9">
|
||||||
<a class="close" onclick="window.history.back();">×</a>
|
<div class="appframe-area"></div>
|
||||||
<h1>To Do</h1>
|
|
||||||
<br>
|
|
||||||
<div>
|
<div>
|
||||||
<div id="todo-list">
|
<a class="close" onclick="window.history.back();">×</a>
|
||||||
<h4>My List</h4><br>
|
<h1>To Do</h1>
|
||||||
<div class="todo-content"></div>
|
<br>
|
||||||
|
<div>
|
||||||
|
<div id="todo-list">
|
||||||
|
<h4>My List</h4><br>
|
||||||
|
<div class="todo-content"></div>
|
||||||
|
</div>
|
||||||
|
<div id="assigned-todo-list">
|
||||||
|
<h4>Assigned to others</h4><br>
|
||||||
|
<div class="todo-content"></div>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div id="assigned-todo-list">
|
<div style="margin-top: 21px; clear: both">
|
||||||
<h4>Assigned to others</h4><br>
|
<button id="add-todo" class="btn btn-small"><i class="icon-plus"></i> Add</button>
|
||||||
<div class="todo-content"></div>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div style="margin-top: 21px; clear: both">
|
|
||||||
<button id="add-todo" class="btn btn-small"><i class="icon-plus"></i> Add</button>
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
@@ -67,16 +67,18 @@ erpnext.todo.ToDoItem = Class.extend({
|
|||||||
|
|
||||||
todo.fullname = '';
|
todo.fullname = '';
|
||||||
if(todo.assigned_by) {
|
if(todo.assigned_by) {
|
||||||
|
var assigned_by = wn.boot.user_info[todo.assigned_by]
|
||||||
todo.fullname = repl("[By %(fullname)s] ", {
|
todo.fullname = repl("[By %(fullname)s] ", {
|
||||||
fullname: wn.boot.user_info[todo.assigned_by].fullname
|
fullname: (assigned_by ? assigned_by.fullname : todo.assigned_by),
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
var parent_list = "#todo-list";
|
var parent_list = "#todo-list";
|
||||||
if(todo.owner !== user) {
|
if(todo.owner !== user) {
|
||||||
parent_list = "#assigned-todo-list";
|
parent_list = "#assigned-todo-list";
|
||||||
|
var owner = wn.boot.user_info[todo.owner];
|
||||||
todo.fullname = repl("[To %(fullname)s] ", {
|
todo.fullname = repl("[To %(fullname)s] ", {
|
||||||
fullname: wn.boot.user_info[todo.owner].fullname
|
fullname: (owner ? owner.fullname : todo.owner),
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
parent_list += " div.todo-content";
|
parent_list += " div.todo-content";
|
||||||
|
|||||||
Reference in New Issue
Block a user