Merge branch 'master' into production

This commit is contained in:
Nabin Hait 2012-12-17 11:39:41 +05:30
commit 9ea22b75bd
3 changed files with 20 additions and 20 deletions

View File

@ -719,7 +719,7 @@ def get_next_date(dt, mcount, day=None):
if not day: if not day:
day = getdate(dt).day day = getdate(dt).day
if month > 12: if month > 12:
month, year = m-12, y+1 month, year = month-12, year+1
try: try:
next_month_date = datetime.date(year, month, day) next_month_date = datetime.date(year, month, day)
except: except:
@ -728,24 +728,25 @@ def get_next_date(dt, mcount, day=None):
next_month_date = datetime.date(year, month, last_day) next_month_date = datetime.date(year, month, last_day)
return next_month_date.strftime("%Y-%m-%d") return next_month_date.strftime("%Y-%m-%d")
def manage_recurring_invoices(): def manage_recurring_invoices(next_date=None):
""" """
Create recurring invoices on specific date by copying the original one Create recurring invoices on specific date by copying the original one
and notify the concerned people and notify the concerned people
""" """
next_date = next_date or nowdate()
recurring_invoices = webnotes.conn.sql("""select name, recurring_id recurring_invoices = webnotes.conn.sql("""select name, recurring_id
from `tabSales Invoice` where ifnull(convert_into_recurring_invoice, 0)=1 from `tabSales Invoice` where ifnull(convert_into_recurring_invoice, 0)=1
and docstatus=1 and next_date=%s and docstatus=1 and next_date=%s
and next_date <= ifnull(end_date, '2199-12-31')""", nowdate()) and next_date <= ifnull(end_date, '2199-12-31')""", next_date)
exception_list = [] exception_list = []
for ref_invoice, recurring_id in recurring_invoices: for ref_invoice, recurring_id in recurring_invoices:
if not webnotes.conn.sql("""select name from `tabSales Invoice` if not webnotes.conn.sql("""select name from `tabSales Invoice`
where posting_date=%s and recurring_id=%s and docstatus=1""", where posting_date=%s and recurring_id=%s and docstatus=1""",
(nowdate(), recurring_id)): (next_date, recurring_id)):
try: try:
ref_wrapper = webnotes.model_wrapper('Sales Invoice', ref_invoice) ref_wrapper = webnotes.model_wrapper('Sales Invoice', ref_invoice)
new_invoice_wrapper = make_new_invoice(ref_wrapper) new_invoice_wrapper = make_new_invoice(ref_wrapper, next_date)
send_notification(new_invoice_wrapper) send_notification(new_invoice_wrapper)
webnotes.conn.commit() webnotes.conn.commit()
except Exception, e: except Exception, e:
@ -765,19 +766,17 @@ def manage_recurring_invoices():
exception_message = "\n\n".join([cstr(d) for d in exception_list]) exception_message = "\n\n".join([cstr(d) for d in exception_list])
raise Exception, exception_message raise Exception, exception_message
def make_new_invoice(ref_wrapper): def make_new_invoice(ref_wrapper, posting_date):
from webnotes.model.wrapper import clone from webnotes.model.wrapper import clone
new_invoice = clone(ref_wrapper) new_invoice = clone(ref_wrapper)
mcount = month_map[ref_wrapper.doc.recurring_type] mcount = month_map[ref_wrapper.doc.recurring_type]
today = nowdate()
new_invoice.doc.fields.update({
"posting_date": today,
"aging_date": today,
"due_date": add_days(today, cint(date_diff(ref_wrapper.doc.due_date, new_invoice.doc.fields.update({
"posting_date": posting_date,
"aging_date": posting_date,
"due_date": add_days(posting_date, cint(date_diff(ref_wrapper.doc.due_date,
ref_wrapper.doc.posting_date))), ref_wrapper.doc.posting_date))),
"invoice_period_from_date": \ "invoice_period_from_date": \
@ -911,4 +910,4 @@ def get_bank_cash_account(mode_of_payment):
webnotes.msgprint("Default Bank / Cash Account not set in Mode of Payment: %s. Please add a Default Account in Mode of Payment master." % mode_of_payment) webnotes.msgprint("Default Bank / Cash Account not set in Mode of Payment: %s. Please add a Default Account in Mode of Payment master." % mode_of_payment)
return { return {
"cash_bank_account": val "cash_bank_account": val
} }

View File

@ -57,17 +57,18 @@ erpnext.startup.start = function() {
var today = dateutil.str_to_obj(wn.boot.server_date); var today = dateutil.str_to_obj(wn.boot.server_date);
var expires_on = dateutil.str_to_obj(wn.boot.expires_on); var expires_on = dateutil.str_to_obj(wn.boot.expires_on);
var diff = dateutil.get_diff(expires_on, today); var diff = dateutil.get_diff(expires_on, today);
var payment_link = "<a href=\"https://erpnext.com/modes-of-payment.html\" target=\"_blank\">See Payment Options.</a>";
if (0 <= diff && diff <= 15) { if (0 <= diff && diff <= 15) {
var expiry_string = diff==0 ? "today" : repl("in %(diff)s day(s)", { diff: diff }); var expiry_string = diff==0 ? "today" : repl("in %(diff)s day(s)", { diff: diff });
$('header').append(repl('<div class="expiry-info"> \ $('header').append(repl('<div class="expiry-info"> \
Your ERPNext subscription will <b>expire %(expiry_string)s</b>. \ Your ERPNext subscription will <b>expire %(expiry_string)s</b>. \
Please renew your subscription to continue using ERPNext \ Please renew your subscription to continue using ERPNext \
(and remove this annoying banner). \ (and remove this annoying banner). %(payment_link)s\
</div>', { expiry_string: expiry_string })); </div>', { expiry_string: expiry_string, payment_link: payment_link }));
} else if (diff < 0) { } else if (diff < 0) {
$('header').append(repl('<div class="expiry-info"> \ $('header').append(repl('<div class="expiry-info"> \
This ERPNext subscription <b>has expired</b>. \ This ERPNext subscription <b>has expired</b>. %(payment_link)s\
</div>', { expiry_string: expiry_string })); </div>', { expiry_string: expiry_string, payment_link: payment_link }));
} }
} }
erpnext.set_about(); erpnext.set_about();
@ -179,4 +180,4 @@ erpnext.setup_mousetrap = function() {
// start // start
$(document).bind('startup', function() { $(document).bind('startup', function() {
erpnext.startup.start(); erpnext.startup.start();
}); });

View File

@ -51,7 +51,7 @@ class DocType:
# ------------------------------------------------------------------- # -------------------------------------------------------------------
def get_permissions(self,doctype): def get_permissions(self,doctype):
import webnotes.model.doctype import webnotes.model.doctype
doclist = webnotes.model.doctype.get(doctype) doclist = webnotes.model.doctype.get(doctype).get_parent_doclist()
ptype = [{ ptype = [{
'role': perm.role, 'role': perm.role,