Merge branch 'master' of github.com:webnotes/erpnext into handlerupdate
This commit is contained in:
commit
0dd5da2299
@ -5,7 +5,7 @@
|
|||||||
{
|
{
|
||||||
'creation': '2010-08-08 17:09:18',
|
'creation': '2010-08-08 17:09:18',
|
||||||
'docstatus': 0,
|
'docstatus': 0,
|
||||||
'modified': '2012-03-02 12:22:21',
|
'modified': '2012-03-06 11:05:53',
|
||||||
'modified_by': u'Administrator',
|
'modified_by': u'Administrator',
|
||||||
'owner': u'Administrator'
|
'owner': u'Administrator'
|
||||||
},
|
},
|
||||||
@ -21,7 +21,7 @@
|
|||||||
|
|
||||||
# These values are common for all DocType
|
# These values are common for all DocType
|
||||||
{
|
{
|
||||||
'_last_update': u'1330593645',
|
'_last_update': u'1330671142',
|
||||||
'change_log': u'1. Change in pull_details method dt.-26-06-2009',
|
'change_log': u'1. Change in pull_details method dt.-26-06-2009',
|
||||||
'colour': u'White:FFF',
|
'colour': u'White:FFF',
|
||||||
'default_print_format': u'Standard',
|
'default_print_format': u'Standard',
|
||||||
@ -34,7 +34,7 @@
|
|||||||
'server_code_error': u' ',
|
'server_code_error': u' ',
|
||||||
'show_in_menu': 0,
|
'show_in_menu': 0,
|
||||||
'subject': u'To %(customer_name)s worth %(currency)s %(grand_total_export)s due on %(due_date)s | %(outstanding_amount)s outstanding',
|
'subject': u'To %(customer_name)s worth %(currency)s %(grand_total_export)s due on %(due_date)s | %(outstanding_amount)s outstanding',
|
||||||
'version': 415
|
'version': 416
|
||||||
},
|
},
|
||||||
|
|
||||||
# These values are common for all DocFormat
|
# These values are common for all DocFormat
|
||||||
@ -176,7 +176,6 @@
|
|||||||
# DocField
|
# DocField
|
||||||
{
|
{
|
||||||
'colour': u'White:FFF',
|
'colour': u'White:FFF',
|
||||||
'default': u'INV',
|
|
||||||
'depends_on': u'eval:doc.retail_transaction!="Yes"',
|
'depends_on': u'eval:doc.retail_transaction!="Yes"',
|
||||||
'description': u'To manage multiple series please go to Setup > Manage Series',
|
'description': u'To manage multiple series please go to Setup > Manage Series',
|
||||||
'doctype': u'DocField',
|
'doctype': u'DocField',
|
||||||
|
@ -47,7 +47,7 @@ feed_dict = {
|
|||||||
# Support
|
# Support
|
||||||
'Customer Issue': ['[%(status)s] %(description)s by %(customer_name)s', '#000080'],
|
'Customer Issue': ['[%(status)s] %(description)s by %(customer_name)s', '#000080'],
|
||||||
'Maintenance Visit':['To %(customer_name)s', '#4169E1'],
|
'Maintenance Visit':['To %(customer_name)s', '#4169E1'],
|
||||||
'Support Ticket': ['[%(status)s] %(subject)s', '#000080'],
|
'Support Ticket': ["[%(status)s] %(subject)s", '#000080'],
|
||||||
|
|
||||||
# Website
|
# Website
|
||||||
'Web Page': ['%(title)s', '#000080'],
|
'Web Page': ['%(title)s', '#000080'],
|
||||||
|
@ -67,7 +67,7 @@ def add_user(args):
|
|||||||
# erpnext-saas
|
# erpnext-saas
|
||||||
if cint(webnotes.conn.get_value('Control Panel', None, 'sync_with_gateway')):
|
if cint(webnotes.conn.get_value('Control Panel', None, 'sync_with_gateway')):
|
||||||
from server_tools.gateway_utils import add_user_gateway
|
from server_tools.gateway_utils import add_user_gateway
|
||||||
add_user_gateway(args['user'])
|
add_user_gateway(args)
|
||||||
|
|
||||||
add_profile(args)
|
add_profile(args)
|
||||||
|
|
||||||
|
3
erpnext/patches/jan_mar_2012/remove_series_defval.py
Normal file
3
erpnext/patches/jan_mar_2012/remove_series_defval.py
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
def execute():
|
||||||
|
import webnotes
|
||||||
|
webnotes.conn.sql("update `tabDocField` set `default`='' where parent = 'Receivable Voucher' and fieldname = 'naming_series' and `default` = 'INV'")
|
@ -177,5 +177,10 @@ patch_list = [
|
|||||||
'patch_file': 'reload_table',
|
'patch_file': 'reload_table',
|
||||||
'description': 'Relaod all item table: fld order changes'
|
'description': 'Relaod all item table: fld order changes'
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
'patch_module': 'patches.jan_mar_2012',
|
||||||
|
'patch_file': 'remove_series_defval',
|
||||||
|
'description': 'Remove rv series default value'
|
||||||
|
},
|
||||||
|
|
||||||
]
|
]
|
||||||
|
@ -282,7 +282,8 @@ class DocType:
|
|||||||
Returns start and end date depending on the frequency of email digest
|
Returns start and end date depending on the frequency of email digest
|
||||||
"""
|
"""
|
||||||
from datetime import datetime, date, timedelta
|
from datetime import datetime, date, timedelta
|
||||||
today = datetime.now().date()
|
from webnotes.utils import now_datetime
|
||||||
|
today = now_datetime().date()
|
||||||
year, month, day = today.year, today.month, today.day
|
year, month, day = today.year, today.month, today.day
|
||||||
|
|
||||||
if self.doc.frequency == 'Daily':
|
if self.doc.frequency == 'Daily':
|
||||||
@ -409,6 +410,7 @@ class DocType:
|
|||||||
|
|
||||||
from webnotes.utils.email_lib import sendmail
|
from webnotes.utils.email_lib import sendmail
|
||||||
try:
|
try:
|
||||||
|
#webnotes.msgprint('in send')
|
||||||
sendmail(
|
sendmail(
|
||||||
recipients=recipient_list,
|
recipients=recipient_list,
|
||||||
sender='notifications+email_digest@erpnext.com',
|
sender='notifications+email_digest@erpnext.com',
|
||||||
@ -419,64 +421,22 @@ class DocType:
|
|||||||
)
|
)
|
||||||
except Exception, e:
|
except Exception, e:
|
||||||
webnotes.msgprint('There was a problem in sending your email. Please contact support@erpnext.com')
|
webnotes.msgprint('There was a problem in sending your email. Please contact support@erpnext.com')
|
||||||
#webnotes.errprint(webnotes.getTraceback())
|
webnotes.errprint(webnotes.getTraceback())
|
||||||
|
|
||||||
|
|
||||||
def get_next_sending(self):
|
def get_next_sending(self):
|
||||||
"""
|
|
||||||
|
|
||||||
"""
|
|
||||||
# Get TimeZone
|
|
||||||
# Get System TimeZone
|
|
||||||
import time
|
|
||||||
from pytz import timezone
|
|
||||||
import datetime
|
import datetime
|
||||||
import webnotes.defs
|
|
||||||
cp = webnotes.model.doc.Document('Control Panel','Control Panel')
|
|
||||||
app_tz = timezone(cp.time_zone)
|
|
||||||
server_tz = timezone(getattr(webnotes.defs, 'system_timezone'))
|
|
||||||
|
|
||||||
start_date, end_date = self.get_start_end_dates()
|
start_date, end_date = self.get_start_end_dates()
|
||||||
|
|
||||||
new_date = end_date + datetime.timedelta(days=1)
|
send_date = end_date + datetime.timedelta(days=1)
|
||||||
new_time = datetime.time(hour=6)
|
|
||||||
|
|
||||||
naive_dt = datetime.datetime.combine(new_date, new_time)
|
|
||||||
app_dt = app_tz.localize(naive_dt)
|
|
||||||
server_dt = server_tz.normalize(app_dt.astimezone(server_tz))
|
|
||||||
|
|
||||||
res = {
|
|
||||||
'app_dt': app_dt.replace(tzinfo=None),
|
|
||||||
'app_tz': app_tz,
|
|
||||||
'server_dt': server_dt.replace(tzinfo=None),
|
|
||||||
'server_tz': server_tz
|
|
||||||
}
|
|
||||||
|
|
||||||
from webnotes.utils import formatdate
|
from webnotes.utils import formatdate
|
||||||
str_date = formatdate(str(res['app_dt'].date()))
|
str_date = formatdate(str(send_date))
|
||||||
str_time = res['app_dt'].time().strftime('%I:%M')
|
|
||||||
|
|
||||||
self.doc.next_send = str_date + " at about " + str_time
|
self.doc.next_send = str_date + " at midnight"
|
||||||
|
|
||||||
return res
|
return send_date
|
||||||
|
|
||||||
|
|
||||||
def get_next_execution(self):
|
|
||||||
"""
|
|
||||||
|
|
||||||
"""
|
|
||||||
from datetime import datetime, timedelta
|
|
||||||
dt_args = self.get_next_sending()
|
|
||||||
server_dt = dt_args['server_dt']
|
|
||||||
now_dt = datetime.now(dt_args['server_tz'])
|
|
||||||
if now_dt.time() <= server_dt.time():
|
|
||||||
next_date = now_dt.date()
|
|
||||||
else:
|
|
||||||
next_date = now_dt.date() + timedelta(days=1)
|
|
||||||
|
|
||||||
next_time = server_dt.time()
|
|
||||||
|
|
||||||
return datetime.combine(next_date, next_time)
|
|
||||||
|
|
||||||
|
|
||||||
def onload(self):
|
def onload(self):
|
||||||
@ -743,21 +703,16 @@ def send():
|
|||||||
""", as_list=1)
|
""", as_list=1)
|
||||||
|
|
||||||
from webnotes.model.code import get_obj
|
from webnotes.model.code import get_obj
|
||||||
from datetime import datetime, timedelta
|
from webnotes.utils import now_datetime
|
||||||
now = datetime.now()
|
|
||||||
now_date = now.date()
|
|
||||||
now_time = (now + timedelta(hours=2)).time()
|
|
||||||
|
|
||||||
|
now_date = now_datetime().date()
|
||||||
|
|
||||||
for ed in edigest_list:
|
for ed in edigest_list:
|
||||||
if ed[0]:
|
if ed[0]:
|
||||||
ed_obj = get_obj('Email Digest', ed[0])
|
ed_obj = get_obj('Email Digest', ed[0])
|
||||||
ed_obj.sending = True
|
ed_obj.sending = True
|
||||||
dt_dict = ed_obj.get_next_sending()
|
send_date = ed_obj.get_next_sending()
|
||||||
send_date = dt_dict['server_dt'].date()
|
#webnotes.msgprint([ed[0], now_date, send_date])
|
||||||
send_time = dt_dict['server_dt'].time()
|
|
||||||
|
|
||||||
if (now_date == send_date):
|
if (now_date == send_date):
|
||||||
#webnotes.msgprint('sending ' + ed_obj.doc.name)
|
|
||||||
ed_obj.send()
|
ed_obj.send()
|
||||||
#else:
|
|
||||||
# webnotes.msgprint('not sending ' + ed_obj.doc.name)
|
|
||||||
|
@ -35,8 +35,8 @@ class DocType:
|
|||||||
"""
|
"""
|
||||||
Update value in control panel
|
Update value in control panel
|
||||||
"""
|
"""
|
||||||
if self.doc.fields.get(key):
|
webnotes.conn.set_value('Control Panel', None, key,
|
||||||
webnotes.conn.set_value('Control Panel', None, key, self.doc.fields[key])
|
self.doc.fields.get(key))
|
||||||
|
|
||||||
def validate(self):
|
def validate(self):
|
||||||
"""
|
"""
|
||||||
@ -117,19 +117,7 @@ class DocType:
|
|||||||
|
|
||||||
def on_update(self):
|
def on_update(self):
|
||||||
"""
|
"""
|
||||||
Sets or cancels the event in the scheduler
|
update control panel
|
||||||
"""
|
"""
|
||||||
# update control panel
|
|
||||||
for f in ('outgoing_mail_server', 'mail_login', 'mail_password', 'auto_email_id', 'mail_port', 'use_ssl'):
|
for f in ('outgoing_mail_server', 'mail_login', 'mail_password', 'auto_email_id', 'mail_port', 'use_ssl'):
|
||||||
self.set_cp_value(f)
|
self.set_cp_value(f)
|
||||||
|
|
||||||
# setup scheduler for support emails
|
|
||||||
if cint(self.doc.sync_support_mails):
|
|
||||||
if not (self.doc.support_host and self.doc.support_username and self.doc.support_password):
|
|
||||||
webnotes.msgprint("You must give the incoming POP3 settings for support emails to activiate mailbox integration", raise_exception=1)
|
|
||||||
|
|
||||||
from webnotes.utils.scheduler import set_event
|
|
||||||
set_event('support.doctype.support_ticket.get_support_mails', 60*5, 1)
|
|
||||||
else:
|
|
||||||
from webnotes.utils.scheduler import cancel_event
|
|
||||||
cancel_event('support.doctype.support_ticket.get_support_mails')
|
|
||||||
|
@ -5,7 +5,7 @@
|
|||||||
{
|
{
|
||||||
'creation': '2010-08-08 17:09:16',
|
'creation': '2010-08-08 17:09:16',
|
||||||
'docstatus': 0,
|
'docstatus': 0,
|
||||||
'modified': '2012-03-05 15:01:58',
|
'modified': '2012-03-05 17:44:23',
|
||||||
'modified_by': u'Administrator',
|
'modified_by': u'Administrator',
|
||||||
'owner': u'Administrator'
|
'owner': u'Administrator'
|
||||||
},
|
},
|
||||||
@ -22,7 +22,7 @@
|
|||||||
'section_style': u'Tray',
|
'section_style': u'Tray',
|
||||||
'server_code_error': u' ',
|
'server_code_error': u' ',
|
||||||
'show_in_menu': 0,
|
'show_in_menu': 0,
|
||||||
'version': 77
|
'version': 78
|
||||||
},
|
},
|
||||||
|
|
||||||
# These values are common for all DocField
|
# These values are common for all DocField
|
||||||
@ -295,7 +295,7 @@
|
|||||||
'oldfieldname': u'serial_no',
|
'oldfieldname': u'serial_no',
|
||||||
'oldfieldtype': u'Text',
|
'oldfieldtype': u'Text',
|
||||||
'permlevel': 0,
|
'permlevel': 0,
|
||||||
'print_hide': 1,
|
'print_hide': 0,
|
||||||
'report_hide': 0
|
'report_hide': 0
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -81,6 +81,7 @@ class SupportMailbox(POP3Mailbox):
|
|||||||
st.make_response_record(content, mail.mail['From'], content_type)
|
st.make_response_record(content, mail.mail['From'], content_type)
|
||||||
webnotes.conn.set(st.doc, 'status', 'Open')
|
webnotes.conn.set(st.doc, 'status', 'Open')
|
||||||
update_feed(st.doc, 'on_update')
|
update_feed(st.doc, 'on_update')
|
||||||
|
webnotes.conn.commit()
|
||||||
# extract attachments
|
# extract attachments
|
||||||
self.save_attachments(st.doc, mail.attachments)
|
self.save_attachments(st.doc, mail.attachments)
|
||||||
return
|
return
|
||||||
@ -99,21 +100,22 @@ class SupportMailbox(POP3Mailbox):
|
|||||||
d.naming_series = (opts and opts[0] and opts[0][0] and opts[0][0].split("\n")[0]) or 'SUP'
|
d.naming_series = (opts and opts[0] and opts[0][0] and opts[0][0].split("\n")[0]) or 'SUP'
|
||||||
try:
|
try:
|
||||||
d.save(1)
|
d.save(1)
|
||||||
|
except:
|
||||||
|
d.description = 'Unable to extract message'
|
||||||
|
d.save(1)
|
||||||
|
|
||||||
|
else:
|
||||||
# update feed
|
# update feed
|
||||||
update_feed(d, 'on_update')
|
update_feed(d, 'on_update')
|
||||||
|
|
||||||
# send auto reply
|
# send auto reply
|
||||||
self.send_auto_reply(d)
|
self.send_auto_reply(d)
|
||||||
|
|
||||||
except:
|
webnotes.conn.commit()
|
||||||
d.description = 'Unable to extract message'
|
|
||||||
d.save(1)
|
|
||||||
|
|
||||||
else:
|
|
||||||
# extract attachments
|
# extract attachments
|
||||||
self.save_attachments(d, mail.attachments)
|
self.save_attachments(d, mail.attachments)
|
||||||
|
|
||||||
|
|
||||||
def save_attachments(self, doc, attachment_list=[]):
|
def save_attachments(self, doc, attachment_list=[]):
|
||||||
"""
|
"""
|
||||||
@ -138,9 +140,10 @@ class SupportMailbox(POP3Mailbox):
|
|||||||
"""
|
"""
|
||||||
Send auto reply to emails
|
Send auto reply to emails
|
||||||
"""
|
"""
|
||||||
signature = self.email_settings.support_signature
|
from webnotes.utils import cstr
|
||||||
|
signature = self.email_settings.fields.get('support_signature') or ''
|
||||||
|
|
||||||
response = self.email_settings.support_autoreply or ("""
|
response = self.email_settings.fields.get('support_autoreply') or ("""
|
||||||
A new Ticket has been raised for your query. If you have any additional information, please
|
A new Ticket has been raised for your query. If you have any additional information, please
|
||||||
reply back to this mail.
|
reply back to this mail.
|
||||||
|
|
||||||
@ -148,15 +151,15 @@ We will get back to you as soon as possible
|
|||||||
|
|
||||||
[This is an automatic response]
|
[This is an automatic response]
|
||||||
|
|
||||||
""" + (signature or ''))
|
""" + cstr(signature))
|
||||||
|
|
||||||
from webnotes.utils.email_lib import sendmail
|
from webnotes.utils.email_lib import sendmail
|
||||||
|
|
||||||
sendmail(\
|
sendmail(\
|
||||||
recipients = [d.raised_by], \
|
recipients = [cstr(d.raised_by)], \
|
||||||
sender = self.email_settings.support_email, \
|
sender = cstr(self.email_settings.fields.get('support_email')), \
|
||||||
subject = '['+d.name+'] ' + cstr(d.subject), \
|
subject = '['+cstr(d.name)+'] ' + cstr(d.subject), \
|
||||||
msg = response)
|
msg = cstr(response))
|
||||||
|
|
||||||
def auto_close_tickets(self):
|
def auto_close_tickets(self):
|
||||||
"""
|
"""
|
||||||
|
Loading…
x
Reference in New Issue
Block a user