Merge branch 'dev' of github.com:webnotes/erpnext into dev
This commit is contained in:
commit
e3dd54c220
@ -20,19 +20,8 @@ cur_frm.cscript.onload = function(doc, cdt, cdn) {
|
|||||||
if (!doc.transaction_date) doc.transaction_date = dateutil.obj_to_str(new Date());
|
if (!doc.transaction_date) doc.transaction_date = dateutil.obj_to_str(new Date());
|
||||||
}
|
}
|
||||||
|
|
||||||
cur_frm.cscript.refresh = function(doc, cdt, cdn) {
|
|
||||||
hide_field('repost_account_balances');
|
|
||||||
hide_field('next_fiscal_year');
|
|
||||||
hide_field('repost');
|
|
||||||
|
|
||||||
if (doc.docstatus == 1) {
|
|
||||||
unhide_field('repost_account_balances');
|
|
||||||
unhide_field('next_fiscal_year');
|
|
||||||
unhide_field('repost');
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// ***************** Get Account Head *****************
|
// ***************** Get Account Head *****************
|
||||||
cur_frm.fields_dict['closing_account_head'].get_query = function(doc, cdt, cdn) {
|
cur_frm.fields_dict['closing_account_head'].get_query = function(doc, cdt, cdn) {
|
||||||
return 'SELECT `tabAccount`.name FROM `tabAccount` WHERE `tabAccount`.is_pl_account = "No" AND `tabAccount`.debit_or_credit = "Credit" AND `tabAccount`.company = "'+ cstr(doc.company) +'" AND `tabAccount`.freeze_account = "No" AND `tabAccount`.group_or_ledger = "Ledger" AND `tabAccount`.%(key)s LIKE "%s" ORDER BY `tabAccount`.name ASC LIMIT 50';
|
return 'SELECT `tabAccount`.name FROM `tabAccount` WHERE `tabAccount`.is_pl_account = "No" AND `tabAccount`.debit_or_credit = "Credit" AND `tabAccount`.company = "'+ cstr(doc.company) +'" AND ifnull(`tabAccount`.freeze_account, "No") = "No" AND `tabAccount`.group_or_ledger = "Ledger" AND `tabAccount`.%(key)s LIKE "%s" ORDER BY `tabAccount`.name ASC LIMIT 50';
|
||||||
}
|
}
|
||||||
|
|||||||
@ -41,10 +41,9 @@ class DocType:
|
|||||||
self.year_end_date = ''
|
self.year_end_date = ''
|
||||||
|
|
||||||
|
|
||||||
# Validate Account Head
|
|
||||||
#============================================================
|
|
||||||
def validate_account_head(self):
|
def validate_account_head(self):
|
||||||
acc_det = sql("select debit_or_credit, is_pl_account, group_or_ledger, company from `tabAccount` where name = '%s'" % (self.doc.closing_account_head))
|
acc_det = sql("select debit_or_credit, is_pl_account, group_or_ledger, company \
|
||||||
|
from `tabAccount` where name = '%s'" % (self.doc.closing_account_head))
|
||||||
|
|
||||||
# Account should be under liability
|
# Account should be under liability
|
||||||
if cstr(acc_det[0][0]) != 'Credit' or cstr(acc_det[0][1]) != 'No':
|
if cstr(acc_det[0][0]) != 'Credit' or cstr(acc_det[0][1]) != 'No':
|
||||||
@ -61,8 +60,7 @@ class DocType:
|
|||||||
msgprint("Account %s does not belong to Company %s ." % (self.doc.closing_account_head, self.doc.company))
|
msgprint("Account %s does not belong to Company %s ." % (self.doc.closing_account_head, self.doc.company))
|
||||||
raise Exception
|
raise Exception
|
||||||
|
|
||||||
# validate posting date
|
|
||||||
#=============================================================
|
|
||||||
def validate_posting_date(self):
|
def validate_posting_date(self):
|
||||||
yr = sql("select start_date, end_date from `tabPeriod` where period_name = '%s'" % (self.doc.fiscal_year))
|
yr = sql("select start_date, end_date from `tabPeriod` where period_name = '%s'" % (self.doc.fiscal_year))
|
||||||
self.year_start_date = yr and yr[0][0] or ''
|
self.year_start_date = yr and yr[0][0] or ''
|
||||||
@ -74,16 +72,27 @@ class DocType:
|
|||||||
raise Exception
|
raise Exception
|
||||||
|
|
||||||
# Period Closing Entry
|
# Period Closing Entry
|
||||||
pce = sql("select name from `tabPeriod Closing Voucher` where posting_date > '%s' and fiscal_year = '%s' and docstatus = 1" % (self.doc.posting_date, self.doc.fiscal_year))
|
pce = sql("select name from `tabPeriod Closing Voucher` \
|
||||||
|
where posting_date > '%s' and fiscal_year = '%s' and docstatus = 1" \
|
||||||
|
% (self.doc.posting_date, self.doc.fiscal_year))
|
||||||
if pce and pce[0][0]:
|
if pce and pce[0][0]:
|
||||||
msgprint("Another Period Closing Entry: %s has been made after posting date: %s" % (cstr(pce[0][0]), self.doc.posting_date))
|
msgprint("Another Period Closing Entry: %s has been made after posting date: %s"\
|
||||||
|
% (cstr(pce[0][0]), self.doc.posting_date))
|
||||||
raise Exception
|
raise Exception
|
||||||
|
|
||||||
# Validate closing entry requirement
|
|
||||||
#==========================================================
|
|
||||||
def validate_pl_balances(self):
|
def validate_pl_balances(self):
|
||||||
income_bal = sql("select sum(ifnull(t1.debit,0))-sum(ifnull(t1.credit,0)) from `tabGL Entry` t1, tabAccount t2 where t1.account = t2.name and t1.posting_date between '%s' and '%s' and t2.debit_or_credit = 'Credit' and t2.group_or_ledger = 'Ledger' and ifnull(t2.freeze_account, 'No') = 'No' and t2.is_pl_account = 'Yes' and t2.docstatus < 2 and t2.company = '%s'" % (self.year_start_date, self.doc.posting_date, self.doc.company))
|
income_bal = sql("select sum(ifnull(t1.debit,0))-sum(ifnull(t1.credit,0)) \
|
||||||
expense_bal = sql("select sum(ifnull(t1.debit,0))-sum(ifnull(t1.credit,0)) from `tabGL Entry` t1, tabAccount t2 where t1.account = t2.name and t1.posting_date between '%s' and '%s' and t2.debit_or_credit = 'Debit' and t2.group_or_ledger = 'Ledger' and ifnull(t2.freeze_account, 'No') = 'No' and t2.is_pl_account = 'Yes' and t2.docstatus < 2 and t2.company = '%s'" % (self.year_start_date, self.doc.posting_date, self.doc.company))
|
from `tabGL Entry` t1, tabAccount t2 where t1.account = t2.name \
|
||||||
|
and t1.posting_date between '%s' and '%s' and t2.debit_or_credit = 'Credit' \
|
||||||
|
and t2.group_or_ledger = 'Ledger' and t2.is_pl_account = 'Yes' and t2.docstatus < 2 \
|
||||||
|
and t2.company = '%s'" % (self.year_start_date, self.doc.posting_date, self.doc.company))
|
||||||
|
|
||||||
|
expense_bal = sql("select sum(ifnull(t1.debit,0))-sum(ifnull(t1.credit,0)) \
|
||||||
|
from `tabGL Entry` t1, tabAccount t2 where t1.account = t2.name \
|
||||||
|
and t1.posting_date between '%s' and '%s' and t2.debit_or_credit = 'Debit' \
|
||||||
|
and t2.group_or_ledger = 'Ledger' and t2.is_pl_account = 'Yes' and t2.docstatus < 2 \
|
||||||
|
and t2.company = '%s'" % (self.year_start_date, self.doc.posting_date, self.doc.company))
|
||||||
|
|
||||||
income_bal = income_bal and income_bal[0][0] or 0
|
income_bal = income_bal and income_bal[0][0] or 0
|
||||||
expense_bal = expense_bal and expense_bal[0][0] or 0
|
expense_bal = expense_bal and expense_bal[0][0] or 0
|
||||||
@ -92,15 +101,18 @@ class DocType:
|
|||||||
msgprint("Both Income and Expense balances are zero. No Need to make Period Closing Entry.")
|
msgprint("Both Income and Expense balances are zero. No Need to make Period Closing Entry.")
|
||||||
raise Exception
|
raise Exception
|
||||||
|
|
||||||
# Get account (pl) specific balance
|
|
||||||
#===========================================================
|
|
||||||
def get_pl_balances(self, d_or_c):
|
def get_pl_balances(self, d_or_c):
|
||||||
acc_bal = sql("select t1.account, sum(ifnull(t1.debit,0))-sum(ifnull(t1.credit,0)) from `tabGL Entry` t1, `tabAccount` t2 where t1.account = t2.name and t2.group_or_ledger = 'Ledger' and ifnull(t2.freeze_account, 'No') = 'No' and ifnull(t2.is_pl_account, 'No') = 'Yes' and ifnull(is_cancelled, 'No') = 'No' and t2.debit_or_credit = '%s' and t2.docstatus < 2 and t2.company = '%s' and t1.posting_date between '%s' and '%s' group by t1.account " % (d_or_c, self.doc.company, self.year_start_date, self.doc.posting_date))
|
"""Get account (pl) specific balance"""
|
||||||
|
acc_bal = sql("select t1.account, sum(ifnull(t1.debit,0))-sum(ifnull(t1.credit,0)) \
|
||||||
|
from `tabGL Entry` t1, `tabAccount` t2 where t1.account = t2.name and t2.group_or_ledger = 'Ledger' \
|
||||||
|
and ifnull(t2.is_pl_account, 'No') = 'Yes' and ifnull(is_cancelled, 'No') = 'No' \
|
||||||
|
and t2.debit_or_credit = '%s' and t2.docstatus < 2 and t2.company = '%s' \
|
||||||
|
and t1.posting_date between '%s' and '%s' group by t1.account " \
|
||||||
|
% (d_or_c, self.doc.company, self.year_start_date, self.doc.posting_date))
|
||||||
return acc_bal
|
return acc_bal
|
||||||
|
|
||||||
|
|
||||||
# Makes GL Entries
|
|
||||||
# ==========================================================
|
|
||||||
def make_gl_entries(self, acc_det):
|
def make_gl_entries(self, acc_det):
|
||||||
for a in acc_det:
|
for a in acc_det:
|
||||||
if flt(a[1]):
|
if flt(a[1]):
|
||||||
@ -126,8 +138,6 @@ class DocType:
|
|||||||
self.save_entry(fdict)
|
self.save_entry(fdict)
|
||||||
|
|
||||||
|
|
||||||
# Save GL Entry
|
|
||||||
# ==========================================================
|
|
||||||
def save_entry(self, fdict, is_cancel = 'No'):
|
def save_entry(self, fdict, is_cancel = 'No'):
|
||||||
# Create new GL entry object and map values
|
# Create new GL entry object and map values
|
||||||
le = Document('GL Entry')
|
le = Document('GL Entry')
|
||||||
@ -148,27 +158,7 @@ class DocType:
|
|||||||
le_obj.on_update(adv_adj = '', cancel = '')
|
le_obj.on_update(adv_adj = '', cancel = '')
|
||||||
|
|
||||||
|
|
||||||
# Reposting Balances
|
|
||||||
# ==========================================================
|
|
||||||
def repost_account_balances(self):
|
|
||||||
# Get Next Fiscal Year
|
|
||||||
fy = sql("select name, is_fiscal_year_closed from `tabFiscal Year` where name = '%s' and past_year = '%s'" % (self.doc.next_fiscal_year, self.doc.fiscal_year))
|
|
||||||
if not fy:
|
|
||||||
msgprint("There is no Fiscal Year with Name " + cstr(self.doc.next_fiscal_year) + " and Past Year " + cstr(self.doc.fiscal_year))
|
|
||||||
raise Exception
|
|
||||||
|
|
||||||
if fy and fy[0][1] == 'Yes':
|
|
||||||
msgprint("Fiscal Year %s has been closed." % cstr(fy[1]))
|
|
||||||
raise Exception
|
|
||||||
|
|
||||||
# Repost Balances
|
|
||||||
get_obj('Fiscal Year', fy[0][0]).repost()
|
|
||||||
|
|
||||||
|
|
||||||
# Validation
|
|
||||||
# ===========================================================
|
|
||||||
def validate(self):
|
def validate(self):
|
||||||
|
|
||||||
# validate account head
|
# validate account head
|
||||||
self.validate_account_head()
|
self.validate_account_head()
|
||||||
|
|
||||||
@ -179,8 +169,6 @@ class DocType:
|
|||||||
self.validate_pl_balances()
|
self.validate_pl_balances()
|
||||||
|
|
||||||
|
|
||||||
# On Submit
|
|
||||||
# ===========================================================
|
|
||||||
def on_submit(self):
|
def on_submit(self):
|
||||||
|
|
||||||
# Makes closing entries for Expense Account
|
# Makes closing entries for Expense Account
|
||||||
@ -197,8 +185,6 @@ class DocType:
|
|||||||
self.make_gl_entries([[self.doc.closing_account_head, flt(bal)]])
|
self.make_gl_entries([[self.doc.closing_account_head, flt(bal)]])
|
||||||
|
|
||||||
|
|
||||||
# On Cancel
|
|
||||||
# =============================================================
|
|
||||||
def on_cancel(self):
|
def on_cancel(self):
|
||||||
# get all submit entries of current closing entry voucher
|
# get all submit entries of current closing entry voucher
|
||||||
gl_entries = sql("select account, debit, credit from `tabGL Entry` where voucher_type = 'Period Closing Voucher' and voucher_no = '%s' and ifnull(is_cancelled, 'No') = 'No'" % (self.doc.name))
|
gl_entries = sql("select account, debit, credit from `tabGL Entry` where voucher_type = 'Period Closing Voucher' and voucher_no = '%s' and ifnull(is_cancelled, 'No') = 'No'" % (self.doc.name))
|
||||||
|
|||||||
@ -3,9 +3,9 @@
|
|||||||
|
|
||||||
# These values are common in all dictionaries
|
# These values are common in all dictionaries
|
||||||
{
|
{
|
||||||
'creation': '2012-04-13 11:56:17',
|
'creation': '2012-06-11 12:09:52',
|
||||||
'docstatus': 0,
|
'docstatus': 0,
|
||||||
'modified': '2012-05-31 11:38:17',
|
'modified': '2012-07-10 14:21:21',
|
||||||
'modified_by': u'Administrator',
|
'modified_by': u'Administrator',
|
||||||
'owner': u'jai@webnotestech.com'
|
'owner': u'jai@webnotestech.com'
|
||||||
},
|
},
|
||||||
@ -273,42 +273,5 @@
|
|||||||
'permlevel': 0,
|
'permlevel': 0,
|
||||||
'print_hide': 1,
|
'print_hide': 1,
|
||||||
'search_index': 0
|
'search_index': 0
|
||||||
},
|
|
||||||
|
|
||||||
# DocField
|
|
||||||
{
|
|
||||||
'doctype': u'DocField',
|
|
||||||
'fieldname': u'repost_account_balances',
|
|
||||||
'fieldtype': u'Section Break',
|
|
||||||
'label': u'Repost Account Balances',
|
|
||||||
'oldfieldtype': u'Section Break',
|
|
||||||
'options': u'Simple',
|
|
||||||
'permlevel': 0
|
|
||||||
},
|
|
||||||
|
|
||||||
# DocField
|
|
||||||
{
|
|
||||||
'allow_on_submit': 1,
|
|
||||||
'doctype': u'DocField',
|
|
||||||
'fieldname': u'next_fiscal_year',
|
|
||||||
'fieldtype': u'Select',
|
|
||||||
'label': u'Fiscal Year (For Reposting)',
|
|
||||||
'oldfieldname': u'next_fiscal_year',
|
|
||||||
'oldfieldtype': u'Select',
|
|
||||||
'options': u'link:Fiscal Year',
|
|
||||||
'permlevel': 0
|
|
||||||
},
|
|
||||||
|
|
||||||
# DocField
|
|
||||||
{
|
|
||||||
'allow_on_submit': 1,
|
|
||||||
'colour': u'White:FFF',
|
|
||||||
'doctype': u'DocField',
|
|
||||||
'fieldname': u'repost',
|
|
||||||
'fieldtype': u'Button',
|
|
||||||
'label': u'Repost',
|
|
||||||
'oldfieldtype': u'Button',
|
|
||||||
'options': u'repost_account_balances',
|
|
||||||
'permlevel': 0
|
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
@ -54,24 +54,13 @@ class DocType:
|
|||||||
webnotes.msgprint(err_msg)
|
webnotes.msgprint(err_msg)
|
||||||
raise e
|
raise e
|
||||||
|
|
||||||
try:
|
# exceptions are handled in smtp_connect
|
||||||
sess = out_email.smtp_connect()
|
sess = out_email.smtp_connect()
|
||||||
|
|
||||||
try:
|
try:
|
||||||
sess.quit()
|
sess.quit()
|
||||||
except:
|
except:
|
||||||
pass
|
pass
|
||||||
except _socket.error, e:
|
|
||||||
# Invalid mail server -- due to refusing connection
|
|
||||||
webnotes.msgprint('Invalid Outgoing Mail Server or Port. Please rectify and try again.')
|
|
||||||
raise e
|
|
||||||
except smtplib.SMTPAuthenticationError, e:
|
|
||||||
webnotes.msgprint('Invalid Login Id or Mail Password. Please rectify and try again.')
|
|
||||||
raise e
|
|
||||||
except smtplib.SMTPException, e:
|
|
||||||
webnotes.msgprint('There is something wrong with your Outgoing Mail Settings. \
|
|
||||||
Please contact us at support@erpnext.com')
|
|
||||||
raise e
|
|
||||||
|
|
||||||
|
|
||||||
def validate_incoming(self):
|
def validate_incoming(self):
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user