Compare commits

..

7 Commits

Author SHA1 Message Date
Anand Doshi
10fc83d369 Merge branch 'develop' 2015-08-26 17:57:24 +05:30
Anand Doshi
eed8906a1e bumped to version 5.8.2 2015-08-26 18:27:24 +06:00
Anand Doshi
414248b792 [fix] event creation on Contact Date 2015-08-26 17:56:55 +05:30
Anand Doshi
e91b3ea407 Merge branch 'develop' 2015-08-26 17:43:27 +05:30
Anand Doshi
28d53be50c bumped to version 5.8.1 2015-08-26 18:13:26 +06:00
Anand Doshi
cb2f9a863d [hotfix] reload Sales and Purchase Order Item 2015-08-26 17:42:40 +05:30
Anand Doshi
2b6bdc1edb [fix] filter and validation of Debit To and Credit To accounts 2015-08-26 17:42:40 +05:30
9 changed files with 57 additions and 24 deletions

View File

@@ -1,2 +1,2 @@
from __future__ import unicode_literals
__version__ = '5.8.0'
__version__ = '5.8.2'

View File

@@ -148,12 +148,22 @@ cur_frm.fields_dict['items'].grid.get_field("item_code").get_query = function(do
}
cur_frm.fields_dict['credit_to'].get_query = function(doc) {
return{
filters:{
'account_type': 'Payable',
'root_type': 'Liability',
'is_group': 0,
'company': doc.company
// filter on Account
if (doc.supplier) {
return {
filters: {
'account_type': 'Payable',
'is_group': 0,
'company': doc.company
}
}
} else {
return {
filters: {
'report_type': 'Balance Sheet',
'is_group': 0,
'company': doc.company
}
}
}
}

View File

@@ -91,8 +91,12 @@ class PurchaseInvoice(BuyingController):
throw(_("Conversion rate cannot be 0 or 1"))
def validate_credit_to_acc(self):
account_type = frappe.db.get_value("Account", self.credit_to, "account_type")
if account_type != "Payable":
account = frappe.db.get_value("Account", self.credit_to, ["account_type", "report_type"], as_dict=True)
if account.report_type != "Balance Sheet":
frappe.throw(_("Credit To account must be a Balance Sheet account"))
if self.supplier and account.account_type != "Payable":
frappe.throw(_("Credit To account must be a Payable account"))
def check_for_stopped_status(self):

View File

@@ -405,10 +405,22 @@ cur_frm.cscript.on_submit = function(doc, cdt, cdn) {
}
cur_frm.set_query("debit_to", function(doc) {
return{
filters: [
['Account', 'root_type', '=', 'Asset'],
['Account', 'account_type', '=', 'Receivable']
]
// filter on Account
if (doc.customer) {
return {
filters: {
'account_type': 'Receivable',
'is_group': 0,
'company': doc.company
}
}
} else {
return {
filters: {
'report_type': 'Balance Sheet',
'is_group': 0,
'company': doc.company
}
}
}
});

View File

@@ -271,8 +271,12 @@ class SalesInvoice(SellingController):
reconcile_against_document(lst)
def validate_debit_to_acc(self):
account_type = frappe.db.get_value("Account", self.debit_to, "account_type")
if account_type != "Receivable":
account = frappe.db.get_value("Account", self.debit_to, ["account_type", "report_type"], as_dict=True)
if account.report_type != "Balance Sheet":
frappe.throw(_("Debit To account must be a Balance Sheet account"))
if self.customer and account.account_type != "Receivable":
frappe.throw(_("Debit To account must be a Receivable account"))
def validate_fixed_asset_account(self):

View File

@@ -27,7 +27,7 @@ blogs.
"""
app_icon = "icon-th"
app_color = "#e74c3c"
app_version = "5.8.0"
app_version = "5.8.2"
github_link = "https://github.com/frappe/erpnext"
error_report_email = "support@erpnext.com"

View File

@@ -5,6 +5,9 @@ from __future__ import unicode_literals
import frappe
def execute():
frappe.reload_doctype("Sales Order Item")
frappe.reload_doctype("Purchase Order Item")
# sales return
return_entries = list(frappe.db.sql("""
select dn.name as name, dn_item.name as row_id, dn.return_against,

View File

@@ -34,7 +34,7 @@ class TransactionBase(StatusUpdater):
if events:
frappe.db.sql("delete from `tabEvent` where name in (%s)"
.format(", ".join(['%s']*len(events))), tuple(events))
frappe.db.sql("delete from `tabEvent Role` where parent in (%s)"
.format(", ".join(['%s']*len(events))), tuple(events))
@@ -47,7 +47,7 @@ class TransactionBase(StatusUpdater):
"owner": opts.owner or self.owner,
"subject": opts.subject,
"description": opts.description,
"starts_on": self.contact_date + " 10:00:00",
"starts_on": self.contact_date,
"event_type": "Private",
"ref_type": self.doctype,
"ref_name": self.name
@@ -56,7 +56,7 @@ class TransactionBase(StatusUpdater):
event.insert(ignore_permissions=True)
if frappe.db.exists("User", self.contact_by):
frappe.share.add("Event", event.name, self.contact_by,
frappe.share.add("Event", event.name, self.contact_by,
flags={"ignore_share_permission": True})
def validate_uom_is_integer(self, uom_field, qty_fields):
@@ -92,14 +92,14 @@ class TransactionBase(StatusUpdater):
for field, condition in fields:
if prevdoc_values[field] is not None:
self.validate_value(field, condition, prevdoc_values[field], doc)
def validate_rate_with_reference_doc(self, ref_details):
for ref_dt, ref_dn_field, ref_link_field in ref_details:
for d in self.get("items"):
if d.get(ref_link_field):
ref_rate = frappe.db.get_value(ref_dt + " Item", d.get(ref_link_field), "rate")
if abs(flt(d.rate - ref_rate, d.precision("rate"))) >= .01:
frappe.throw(_("Row #{0}: Rate must be same as {1}: {2} ({3} / {4}) ")
.format(d.idx, ref_dt, d.get(ref_dn_field), d.rate, ref_rate))

View File

@@ -1,6 +1,6 @@
from setuptools import setup, find_packages
version = "5.8.0"
version = "5.8.2"
with open("requirements.txt", "r") as f:
install_requires = f.readlines()