[fix] Use for shopping cart validation in Tax Rule

This commit is contained in:
Anand Doshi 2016-04-08 17:05:49 +05:30
parent d89152e4a5
commit 79a415e3b8
2 changed files with 16 additions and 19 deletions

View File

@ -19,19 +19,6 @@ frappe.ui.form.on("Tax Rule", "refresh", function(frm) {
frappe.ui.form.trigger("Tax Rule", "tax_type"); frappe.ui.form.trigger("Tax Rule", "tax_type");
}) })
frappe.ui.form.on("Tax Rule", "use_for_shopping_cart", function(frm) {
if(!frm.doc.use_for_shopping_cart &&
(frappe.get_list("Tax Rule", {"use_for_shopping_cart":1}).length == 0)) {
frappe.model.get_value("Shopping Cart Settings", "Shopping Cart Settings",
"enabled", function(docfield) {
if(docfield.enabled){
frm.set_value("use_for_shopping_cart", 1);
frappe.throw(__("Shopping Cart is enabled"));
}
});
}
})
frappe.ui.form.on("Tax Rule", "customer", function(frm) { frappe.ui.form.on("Tax Rule", "customer", function(frm) {
frappe.call({ frappe.call({
method:"erpnext.accounts.doctype.tax_rule.tax_rule.get_party_details", method:"erpnext.accounts.doctype.tax_rule.tax_rule.get_party_details",

View File

@ -6,7 +6,7 @@ from __future__ import unicode_literals
import frappe import frappe
from frappe import _ from frappe import _
from frappe.model.document import Document from frappe.model.document import Document
from frappe.utils import cstr from frappe.utils import cstr, cint
class IncorrectCustomerGroup(frappe.ValidationError): pass class IncorrectCustomerGroup(frappe.ValidationError): pass
class IncorrectSupplierType(frappe.ValidationError): pass class IncorrectSupplierType(frappe.ValidationError): pass
@ -20,6 +20,7 @@ class TaxRule(Document):
self.validate_tax_template() self.validate_tax_template()
self.validate_date() self.validate_date()
self.validate_filters() self.validate_filters()
self.validate_use_for_shopping_cart()
def validate_tax_template(self): def validate_tax_template(self):
if self.tax_type== "Sales": if self.tax_type== "Sales":
@ -81,6 +82,15 @@ class TaxRule(Document):
if tax_rule[0].priority == self.priority: if tax_rule[0].priority == self.priority:
frappe.throw(_("Tax Rule Conflicts with {0}".format(tax_rule[0].name)), ConflictingTaxRule) frappe.throw(_("Tax Rule Conflicts with {0}".format(tax_rule[0].name)), ConflictingTaxRule)
def validate_use_for_shopping_cart(self):
'''If shopping cart is enabled and no tax rule exists for shopping cart, enable this one'''
if (not self.use_for_shopping_cart
and cint(frappe.db.get_single_value('Shopping Cart Settings', 'enabled'))
and not frappe.db.get_value('Tax Rule', {'use_for_shopping_cart': 1, 'name': ['!=', self.name]})):
self.use_for_shopping_cart = 1
frappe.msgprint(_("Enabling 'Use for Shopping Cart', as Shopping Cart is enabled and there should be at least one Tax Rule for Shopping Cart"))
@frappe.whitelist() @frappe.whitelist()
def get_party_details(party, party_type, args=None): def get_party_details(party, party_type, args=None):
out = {} out = {}
@ -113,7 +123,7 @@ def get_tax_template(posting_date, args):
and (to_date is null or to_date = '' or to_date >= '{0}')""".format(posting_date)] and (to_date is null or to_date = '' or to_date >= '{0}')""".format(posting_date)]
for key, value in args.iteritems(): for key, value in args.iteritems():
if key in "use_for_shopping_cart": if key=="use_for_shopping_cart":
conditions.append("use_for_shopping_cart = {0}".format(1 if value else 0)) conditions.append("use_for_shopping_cart = {0}".format(1 if value else 0))
else: else:
conditions.append("ifnull({0}, '') in ('', '{1}')".format(key, frappe.db.escape(cstr(value)))) conditions.append("ifnull({0}, '') in ('', '{1}')".format(key, frappe.db.escape(cstr(value))))