Merge branch 'develop'
This commit is contained in:
commit
da2d8b958d
@ -1,2 +1,2 @@
|
|||||||
from __future__ import unicode_literals
|
from __future__ import unicode_literals
|
||||||
__version__ = '6.4.1'
|
__version__ = '6.4.2'
|
||||||
|
@ -141,6 +141,7 @@ class PaymentReconciliation(Document):
|
|||||||
|
|
||||||
def reconcile(self, args):
|
def reconcile(self, args):
|
||||||
for e in self.get('payments'):
|
for e in self.get('payments'):
|
||||||
|
e.invoice_type = None
|
||||||
if e.invoice_number and " | " in e.invoice_number:
|
if e.invoice_number and " | " in e.invoice_number:
|
||||||
e.invoice_type, e.invoice_number = e.invoice_number.split(" | ")
|
e.invoice_type, e.invoice_number = e.invoice_number.split(" | ")
|
||||||
|
|
||||||
|
@ -161,40 +161,26 @@ def get_data_with_opening_closing(filters, account_details, gl_entries):
|
|||||||
for acc, acc_dict in gle_map.items():
|
for acc, acc_dict in gle_map.items():
|
||||||
if acc_dict.entries:
|
if acc_dict.entries:
|
||||||
# Opening for individual ledger, if grouped by account
|
# Opening for individual ledger, if grouped by account
|
||||||
if filters.get("group_by_account"):
|
data.append(get_balance_row(_("Opening"), acc_dict.opening,
|
||||||
data.append(get_balance_row(_("Opening"), acc_dict.opening,
|
acc_dict.opening_in_account_currency))
|
||||||
acc_dict.opening_in_account_currency))
|
|
||||||
|
|
||||||
data += acc_dict.entries
|
data += acc_dict.entries
|
||||||
|
|
||||||
# Totals and closing for individual ledger, if grouped by account
|
# Totals and closing for individual ledger, if grouped by account
|
||||||
if filters.get("group_by_account"):
|
account_closing = acc_dict.opening + acc_dict.total_debit - acc_dict.total_credit
|
||||||
account_closing = acc_dict.opening + acc_dict.total_debit - acc_dict.total_credit
|
account_closing_in_account_currency = acc_dict.opening_in_account_currency \
|
||||||
account_closing_in_account_currency = acc_dict.opening_in_account_currency \
|
+ acc_dict.total_debit_in_account_currency - acc_dict.total_credit_in_account_currency
|
||||||
+ acc_dict.total_debit_in_account_currency - acc_dict.total_credit_in_account_currency
|
|
||||||
|
|
||||||
data += [{"account": "'" + _("Totals") + "'", "debit": acc_dict.total_debit,
|
data += [{"account": "'" + _("Totals") + "'", "debit": acc_dict.total_debit,
|
||||||
"credit": acc_dict.total_credit},
|
"credit": acc_dict.total_credit},
|
||||||
get_balance_row(_("Closing (Opening + Totals)"),
|
get_balance_row(_("Closing (Opening + Totals)"),
|
||||||
account_closing, account_closing_in_account_currency), {}]
|
account_closing, account_closing_in_account_currency), {}]
|
||||||
|
|
||||||
else:
|
else:
|
||||||
from_date, to_date = getdate(filters.from_date), getdate(filters.to_date)
|
|
||||||
opening_debit = opening_credit = 0.0
|
|
||||||
|
|
||||||
for gl in gl_entries:
|
for gl in gl_entries:
|
||||||
if gl.posting_date < from_date:
|
if gl.posting_date >= getdate(filters.from_date) and gl.posting_date <= getdate(filters.to_date):
|
||||||
opening_debit += flt(gl.debit, 3)
|
|
||||||
opening_credit += flt(gl.credit, 3)
|
|
||||||
else:
|
|
||||||
data.append(gl)
|
data.append(gl)
|
||||||
|
|
||||||
if not (filters.get("account") or filters.get("party")):
|
|
||||||
data = [{
|
|
||||||
"account": "'" + _("Opening") + "'",
|
|
||||||
"debit": opening_debit,
|
|
||||||
"credit": opening_credit
|
|
||||||
}] + data
|
|
||||||
|
|
||||||
# Total debit and credit between from and to date
|
# Total debit and credit between from and to date
|
||||||
if total_debit or total_credit:
|
if total_debit or total_credit:
|
||||||
|
@ -58,12 +58,12 @@ class Lead(SellingController):
|
|||||||
def check_email_id_is_unique(self):
|
def check_email_id_is_unique(self):
|
||||||
if self.email_id:
|
if self.email_id:
|
||||||
# validate email is unique
|
# validate email is unique
|
||||||
email_list = frappe.db.sql("""select name from tabLead where email_id=%s""",
|
duplicate_leads = frappe.db.sql_list("""select name from tabLead
|
||||||
self.email_id)
|
where email_id=%s and name!=%s""", (self.email_id, self.name))
|
||||||
email_list = [e[0] for e in email_list if e[0]!=self.name]
|
|
||||||
if len(email_list) > 1:
|
if duplicate_leads:
|
||||||
frappe.throw(_("Email id must be unique, already exists for {0}").format(comma_and(email_list)),
|
frappe.throw(_("Email id must be unique, already exists for {0}")
|
||||||
frappe.DuplicateEntryError)
|
.format(comma_and(duplicate_leads)), frappe.DuplicateEntryError)
|
||||||
|
|
||||||
def on_trash(self):
|
def on_trash(self):
|
||||||
frappe.db.sql("""update `tabIssue` set lead='' where lead=%s""",
|
frappe.db.sql("""update `tabIssue` set lead='' where lead=%s""",
|
||||||
|
@ -29,7 +29,7 @@ blogs.
|
|||||||
"""
|
"""
|
||||||
app_icon = "icon-th"
|
app_icon = "icon-th"
|
||||||
app_color = "#e74c3c"
|
app_color = "#e74c3c"
|
||||||
app_version = "6.4.1"
|
app_version = "6.4.2"
|
||||||
github_link = "https://github.com/frappe/erpnext"
|
github_link = "https://github.com/frappe/erpnext"
|
||||||
|
|
||||||
error_report_email = "support@erpnext.com"
|
error_report_email = "support@erpnext.com"
|
||||||
|
@ -5,6 +5,7 @@ from __future__ import unicode_literals
|
|||||||
import frappe
|
import frappe
|
||||||
from frappe.utils import cstr, cint
|
from frappe.utils import cstr, cint
|
||||||
from frappe import msgprint, _
|
from frappe import msgprint, _
|
||||||
|
from calendar import monthrange
|
||||||
|
|
||||||
def execute(filters=None):
|
def execute(filters=None):
|
||||||
if not filters: filters = {}
|
if not filters: filters = {}
|
||||||
@ -73,23 +74,17 @@ def get_conditions(filters):
|
|||||||
msgprint(_("Please select month and year"), raise_exception=1)
|
msgprint(_("Please select month and year"), raise_exception=1)
|
||||||
|
|
||||||
filters["month"] = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov",
|
filters["month"] = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov",
|
||||||
"Dec"].index(filters["month"]) + 1
|
"Dec"].index(filters.month) + 1
|
||||||
|
|
||||||
from frappe.model.document import Document
|
year_start_date, year_end_date = frappe.db.get_value("Fiscal Year", filters.fiscal_year,
|
||||||
fiscal_years = frappe.get_doc("Fiscal Year",filters["fiscal_year"])
|
["year_start_date", "year_end_date"])
|
||||||
import datetime
|
|
||||||
year_start = fiscal_years.year_start_date.strftime("%Y")
|
if filters.month >= year_start_date.strftime("%m"):
|
||||||
year_end = fiscal_years.year_end_date.strftime("%Y")
|
year = year_start_date.strftime("%Y")
|
||||||
dt_test = datetime.datetime.strptime(year_end + "-" + str(100+int(filters["month"]))[2:3] + "-01", "%Y-%m-%d")
|
|
||||||
date_test = datetime.date(dt_test.year, dt_test.month, dt_test.day)
|
|
||||||
if date_test > fiscal_years.year_end_date:
|
|
||||||
year_target = year_start
|
|
||||||
else:
|
else:
|
||||||
year_target = year_end
|
year = year_end_date.strftime("%Y")
|
||||||
|
|
||||||
from calendar import monthrange
|
filters["total_days_in_month"] = monthrange(cint(year), filters.month)[1]
|
||||||
filters["total_days_in_month"] = monthrange(cint(year_target),
|
|
||||||
filters["month"])[1]
|
|
||||||
|
|
||||||
conditions = " and month(att_date) = %(month)s and fiscal_year = %(fiscal_year)s"
|
conditions = " and month(att_date) = %(month)s and fiscal_year = %(fiscal_year)s"
|
||||||
|
|
||||||
|
@ -17,7 +17,6 @@ frappe.ui.form.on("Customer", "refresh", function(frm) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
var grid = cur_frm.get_field("sales_team").grid;
|
var grid = cur_frm.get_field("sales_team").grid;
|
||||||
grid.set_column_disp("allocated_percentage", false);
|
|
||||||
grid.set_column_disp("allocated_amount", false);
|
grid.set_column_disp("allocated_amount", false);
|
||||||
grid.set_column_disp("incentives", false);
|
grid.set_column_disp("incentives", false);
|
||||||
|
|
||||||
@ -101,11 +100,11 @@ cur_frm.fields_dict['accounts'].grid.get_field('account').get_query = function(d
|
|||||||
'company': d.company,
|
'company': d.company,
|
||||||
"is_group": 0
|
"is_group": 0
|
||||||
};
|
};
|
||||||
|
|
||||||
if(doc.party_account_currency) {
|
if(doc.party_account_currency) {
|
||||||
$.extend(filters, {"account_currency": doc.party_account_currency});
|
$.extend(filters, {"account_currency": doc.party_account_currency});
|
||||||
}
|
}
|
||||||
|
|
||||||
return {
|
return {
|
||||||
filters: filters
|
filters: filters
|
||||||
}
|
}
|
||||||
|
@ -53,13 +53,23 @@ def get_permission_query_conditions(doctype):
|
|||||||
if not links.get("not_permitted_links"):
|
if not links.get("not_permitted_links"):
|
||||||
# when everything is permitted, don't add additional condition
|
# when everything is permitted, don't add additional condition
|
||||||
return ""
|
return ""
|
||||||
|
|
||||||
|
elif not links.get("permitted_links"):
|
||||||
|
conditions = []
|
||||||
|
|
||||||
|
# when everything is not permitted
|
||||||
|
for df in links.get("not_permitted_links"):
|
||||||
|
# like ifnull(customer, '')='' and ifnull(supplier, '')=''
|
||||||
|
conditions.append("ifnull(`tab{doctype}`.`{fieldname}`, '')=''".format(doctype=doctype, fieldname=df.fieldname))
|
||||||
|
|
||||||
|
return "( " + " and ".join(conditions) + " )"
|
||||||
|
|
||||||
else:
|
else:
|
||||||
conditions = []
|
conditions = []
|
||||||
|
|
||||||
for df in links.get("permitted_links"):
|
for df in links.get("permitted_links"):
|
||||||
# like ifnull(customer, '')!='' or ifnull(supplier, '')!=''
|
# like ifnull(customer, '')!='' or ifnull(supplier, '')!=''
|
||||||
conditions.append("ifnull(`tab{doctype}`.`{fieldname}`, '')!=''".format(doctype=doctype, fieldname=df.fieldname))
|
conditions.append("ifnull(`tab{doctype}`.`{fieldname}`, '')!=''".format(doctype=doctype, fieldname=df.fieldname))
|
||||||
|
|
||||||
return "( " + " or ".join(conditions) + " )"
|
return "( " + " or ".join(conditions) + " )"
|
||||||
|
|
||||||
|
2
setup.py
2
setup.py
@ -1,6 +1,6 @@
|
|||||||
from setuptools import setup, find_packages
|
from setuptools import setup, find_packages
|
||||||
|
|
||||||
version = "6.4.1"
|
version = "6.4.2"
|
||||||
|
|
||||||
with open("requirements.txt", "r") as f:
|
with open("requirements.txt", "r") as f:
|
||||||
install_requires = f.readlines()
|
install_requires = f.readlines()
|
||||||
|
Loading…
x
Reference in New Issue
Block a user