Merge pull request #1302 from nabinhait/hotfix

Hotfix
This commit is contained in:
Nabin Hait 2014-01-13 04:33:18 -08:00
commit 8d2d4e82fd
9 changed files with 82 additions and 54 deletions

View File

@ -146,11 +146,12 @@ def update_outstanding_amt(account, against_voucher_type, against_voucher, on_ca
webnotes.conn.sql("update `tab%s` set outstanding_amount=%s where name='%s'" % webnotes.conn.sql("update `tab%s` set outstanding_amount=%s where name='%s'" %
(against_voucher_type, bal, against_voucher)) (against_voucher_type, bal, against_voucher))
def validate_frozen_account(account, adv_adj): def validate_frozen_account(account, adv_adj=None):
frozen_account = webnotes.conn.get_value("Account", account, "freeze_account") frozen_account = webnotes.conn.get_value("Account", account, "freeze_account")
if frozen_account == 'Yes' and not adv_adj: if frozen_account == 'Yes' and not adv_adj:
frozen_accounts_modifier = webnotes.conn.get_value( 'Accounts Settings', None, frozen_accounts_modifier = webnotes.conn.get_value( 'Accounts Settings', None,
'frozen_accounts_modifier') 'frozen_accounts_modifier')
if not frozen_accounts_modifier: if not frozen_accounts_modifier:
webnotes.throw(account + _(" is a frozen account. \ webnotes.throw(account + _(" is a frozen account. \
Either make the account active or assign role in Accounts Settings \ Either make the account active or assign role in Accounts Settings \

View File

@ -8,6 +8,7 @@ wn.query_reports["Bank Reconciliation Statement"] = {
"label": wn._("Bank Account"), "label": wn._("Bank Account"),
"fieldtype": "Link", "fieldtype": "Link",
"options": "Account", "options": "Account",
"reqd": 1,
"get_query": function() { "get_query": function() {
return { return {
"query": "accounts.utils.get_account_list", "query": "accounts.utils.get_account_list",
@ -22,7 +23,8 @@ wn.query_reports["Bank Reconciliation Statement"] = {
"fieldname":"report_date", "fieldname":"report_date",
"label": wn._("Date"), "label": wn._("Date"),
"fieldtype": "Date", "fieldtype": "Date",
"default": get_today() "default": get_today(),
"reqd": 1
}, },
] ]
} }

View File

@ -3,12 +3,13 @@
from __future__ import unicode_literals from __future__ import unicode_literals
import webnotes import webnotes
from webnotes import _, msgprint
from webnotes.utils import flt from webnotes.utils import flt
def execute(filters=None): def execute(filters=None):
if not filters: filters = {} if not filters: filters = {}
debit_or_credit = webnotes.conn.get_value("Account", filters["account"], "debit_or_credit")
columns = get_columns() columns = get_columns()
data = get_entries(filters) data = get_entries(filters)
@ -20,47 +21,39 @@ def execute(filters=None):
total_debit += flt(d[4]) total_debit += flt(d[4])
total_credit += flt(d[5]) total_credit += flt(d[5])
if webnotes.conn.get_value("Account", filters["account"], "debit_or_credit") == 'Debit': if debit_or_credit == 'Debit':
bank_bal = flt(balance_as_per_company) - flt(total_debit) + flt(total_credit) bank_bal = flt(balance_as_per_company) - flt(total_debit) + flt(total_credit)
else: else:
bank_bal = flt(balance_as_per_company) + flt(total_debit) - flt(total_credit) bank_bal = flt(balance_as_per_company) + flt(total_debit) - flt(total_credit)
data += [ data += [
["", "", "", "Balance as per company books", balance_as_per_company, ""], get_balance_row("Balance as per company books", balance_as_per_company, debit_or_credit),
["", "", "", "Amounts not reflected in bank", total_debit, total_credit], ["", "", "", "Amounts not reflected in bank", total_debit, total_credit],
["", "", "", "Balance as per bank", bank_bal, ""] get_balance_row("Balance as per bank", bank_bal, debit_or_credit)
] ]
return columns, data return columns, data
def get_columns(): def get_columns():
return ["Journal Voucher:Link/Journal Voucher:140", "Posting Date:Date:100", return ["Journal Voucher:Link/Journal Voucher:140", "Posting Date:Date:100",
"Clearance Date:Date:110", "Against Account:Link/Account:200", "Clearance Date:Date:110", "Against Account:Link/Account:200",
"Debit:Currency:120", "Credit:Currency:120" "Debit:Currency:120", "Credit:Currency:120"
] ]
def get_conditions(filters):
conditions = ""
if not filters.get("account"):
msgprint(_("Please select Bank Account"), raise_exception=1)
else:
conditions += " and jvd.account = %(account)s"
if not filters.get("report_date"):
msgprint(_("Please select Date on which you want to run the report"), raise_exception=1)
else:
conditions += """ and jv.posting_date <= %(report_date)s
and ifnull(jv.clearance_date, '4000-01-01') > %(report_date)s"""
return conditions
def get_entries(filters): def get_entries(filters):
conditions = get_conditions(filters) entries = webnotes.conn.sql("""select
entries = webnotes.conn.sql("""select jv.name, jv.posting_date, jv.clearance_date, jv.name, jv.posting_date, jv.clearance_date, jvd.against_account, jvd.debit, jvd.credit
jvd.against_account, jvd.debit, jvd.credit from
from `tabJournal Voucher Detail` jvd, `tabJournal Voucher` jv `tabJournal Voucher Detail` jvd, `tabJournal Voucher` jv
where jvd.parent = jv.name and jv.docstatus=1 and ifnull(jv.cheque_no, '')!= '' %s where jvd.parent = jv.name and jv.docstatus=1 and ifnull(jv.cheque_no, '')!= ''
order by jv.name DESC""" % conditions, filters, as_list=1) and jvd.account = %(account)s and jv.posting_date <= %(report_date)s
and ifnull(jv.clearance_date, '4000-01-01') > %(report_date)s
order by jv.name DESC""", filters, as_list=1)
return entries return entries
def get_balance_row(label, amount, debit_or_credit):
if debit_or_credit == "Debit":
return ["", "", "", label, amount, 0]
else:
return ["", "", "", label, 0, amount]

View File

@ -3,7 +3,7 @@
from __future__ import unicode_literals from __future__ import unicode_literals
import webnotes import webnotes
from webnotes import _, msgprint, throw from webnotes import _, throw
from webnotes.utils import flt, cint, today, cstr from webnotes.utils import flt, cint, today, cstr
from webnotes.model.code import get_obj from webnotes.model.code import get_obj
from setup.utils import get_company_currency from setup.utils import get_company_currency
@ -44,14 +44,13 @@ class AccountsController(TransactionBase):
def validate_for_freezed_account(self): def validate_for_freezed_account(self):
for fieldname in ["customer", "supplier"]: for fieldname in ["customer", "supplier"]:
if self.meta.get_field(fieldname) and self.doc.fields.get(fieldname): if self.meta.get_field(fieldname) and self.doc.fields.get(fieldname):
accounts = webnotes.conn.get_values("Account", {"master_type": fieldname.title(), accounts = webnotes.conn.get_values("Account",
"master_name": self.doc.fields[fieldname], "company": self.doc.company}, {"master_type": fieldname.title(), "master_name": self.doc.fields[fieldname],
"freeze_account", as_dict=1) "company": self.doc.company}, "name")
if accounts: if accounts:
if not filter(lambda x: cstr(x.freeze_account) in ["", "No"], accounts): from accounts.doctype.gl_entry.gl_entry import validate_frozen_account
throw(_("Account for this ") + fieldname + _(" has been freezed. ") + for account in accounts:
self.doc.doctype + _(" can not be made.")) validate_frozen_account(account[0])
def set_price_list_currency(self, buying_or_selling): def set_price_list_currency(self, buying_or_selling):
if self.meta.get_field("currency"): if self.meta.get_field("currency"):

View File

@ -7,7 +7,7 @@ wn.query_reports["Monthly Salary Register"] = {
"fieldname":"month", "fieldname":"month",
"label": wn._("Month"), "label": wn._("Month"),
"fieldtype": "Select", "fieldtype": "Select",
"options": "Jan\nFeb\nMar\nApr\nMay\nJun\nJul\nAug\nSep\nOct\nNov\nDec", "options": "\nJan\nFeb\nMar\nApr\nMay\nJun\nJul\nAug\nSep\nOct\nNov\nDec",
"default": ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "default": ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov",
"Dec"][wn.datetime.str_to_obj(wn.datetime.get_today()).getMonth()], "Dec"][wn.datetime.str_to_obj(wn.datetime.get_today()).getMonth()],
}, },

View File

@ -59,8 +59,8 @@ def get_columns(salary_slips):
def get_salary_slips(filters): def get_salary_slips(filters):
conditions, filters = get_conditions(filters) conditions, filters = get_conditions(filters)
salary_slips = webnotes.conn.sql("""select * from `tabSalary Slip` where docstatus = 1 %s""" % salary_slips = webnotes.conn.sql("""select * from `tabSalary Slip` where docstatus = 1 %s
conditions, filters, as_dict=1) order by employee, month""" % conditions, filters, as_dict=1)
if not salary_slips: if not salary_slips:
msgprint(_("No salary slip found for month: ") + cstr(filters.get("month")) + msgprint(_("No salary slip found for month: ") + cstr(filters.get("month")) +

View File

@ -0,0 +1,25 @@
# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. and Contributors
# License: GNU General Public License v3. See license.txt
import webnotes
def execute():
webnotes.reload_doc("core", "doctype", "custom_field")
cf_doclist = webnotes.get_doctype("Custom Field")
delete_list = []
for d in webnotes.conn.sql("""select cf.name as cf_name, ps.property,
ps.value, ps.name as ps_name
from `tabProperty Setter` ps, `tabCustom Field` cf
where ps.doctype_or_field = 'DocField' and ps.property != 'previous_field'
and ps.doc_type=cf.dt and ps.field_name=cf.fieldname""", as_dict=1):
if cf_doclist.get_field(d.property):
webnotes.conn.sql("""update `tabCustom Field`
set `%s`=%s where name=%s""" % (d.property, '%s', '%s'), (d.value, d.cf_name))
delete_list.append(d.ps_name)
if delete_list:
webnotes.conn.sql("""delete from `tabProperty Setter` where name in (%s)""" %
', '.join(['%s']*len(delete_list)), tuple(delete_list))

View File

@ -263,5 +263,6 @@ patch_list = [
"patches.1311.p08_email_digest_recipients", "patches.1311.p08_email_digest_recipients",
"execute:webnotes.delete_doc('DocType', 'Warehouse Type')", "execute:webnotes.delete_doc('DocType', 'Warehouse Type')",
"patches.1312.p02_update_item_details_in_item_price", "patches.1312.p02_update_item_details_in_item_price",
"patches.1401.p01_move_related_property_setters_to_custom_field",
"patches.1401.p01_make_buying_selling_as_check_box_in_price_list", "patches.1401.p01_make_buying_selling_as_check_box_in_price_list",
] ]

View File

@ -5,7 +5,7 @@ from __future__ import unicode_literals
import webnotes import webnotes
from webnotes import _, msgprint from webnotes import _, msgprint
from webnotes.utils import cstr from webnotes.utils import cstr, cint
import webnotes.defaults import webnotes.defaults
@ -237,22 +237,29 @@ class DocType:
account.insert() account.insert()
def set_default_accounts(self): def set_default_accounts(self):
accounts = { def _set_default_accounts(accounts):
"default_income_account": "Sales",
"default_expense_account": "Cost of Goods Sold",
"receivables_group": "Accounts Receivable",
"payables_group": "Accounts Payable",
"default_cash_account": "Cash",
"stock_received_but_not_billed": "Stock Received But Not Billed",
"stock_adjustment_account": "Stock Adjustment",
"expenses_included_in_valuation": "Expenses Included In Valuation"
}
for a in accounts: for a in accounts:
account_name = accounts[a] + " - " + self.doc.abbr account_name = accounts[a] + " - " + self.doc.abbr
if not self.doc.fields.get(a) and webnotes.conn.exists("Account", account_name): if not self.doc.fields.get(a) and webnotes.conn.exists("Account", account_name):
webnotes.conn.set(self.doc, a, account_name) webnotes.conn.set(self.doc, a, account_name)
_set_default_accounts({
"default_income_account": "Sales",
"default_expense_account": "Cost of Goods Sold",
"receivables_group": "Accounts Receivable",
"payables_group": "Accounts Payable",
"default_cash_account": "Cash"
})
if cint(webnotes.conn.get_value("Accounts Settings", None, "auto_accounting_for_stock")):
_set_default_accounts({
"stock_received_but_not_billed": "Stock Received But Not Billed",
"stock_adjustment_account": "Stock Adjustment",
"expenses_included_in_valuation": "Expenses Included In Valuation"
})
def create_default_cost_center(self): def create_default_cost_center(self):
cc_list = [ cc_list = [
{ {