Skip to content

Commit e7125c0

Browse files
committed
Merge branch 'develop'
2 parents 398f144 + 8590d5b commit e7125c0

File tree

31 files changed

+741
-264
lines changed

31 files changed

+741
-264
lines changed

erpnext/__init__.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
from __future__ import unicode_literals
33
import frappe
44

5-
__version__ = '8.0.16'
5+
__version__ = '8.0.17'
66

77
def get_default_company(user=None):
88
'''Get default company for user'''

erpnext/accounts/doctype/journal_entry/journal_entry.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -514,7 +514,7 @@ def get_values(self):
514514

515515
def update_expense_claim(self):
516516
for d in self.accounts:
517-
if d.reference_type=="Expense Claim" and d.party:
517+
if d.reference_type=="Expense Claim" and d.reference_name:
518518
doc = frappe.get_doc("Expense Claim", d.reference_name)
519519
update_reimbursed_amount(doc)
520520

erpnext/accounts/report/accounts_receivable/accounts_receivable.js

+15-3
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,21 @@ frappe.query_reports["Accounts Receivable"] = {
1616
"fieldtype": "Link",
1717
"options": "Customer"
1818
},
19+
{
20+
"fieldname":"customer_group",
21+
"label": __("Customer Group"),
22+
"fieldtype": "Link",
23+
"options": "Customer Group"
24+
},
25+
{
26+
"fieldname":"credit_days_based_on",
27+
"label": __("Credit Days Based On"),
28+
"fieldtype": "Select",
29+
"options": "" + NEWLINE + "Fixed Days" + NEWLINE + "Last Day of the Next Month"
30+
},
31+
{
32+
"fieldtype": "Break",
33+
},
1934
{
2035
"fieldname":"report_date",
2136
"label": __("As on Date"),
@@ -29,9 +44,6 @@ frappe.query_reports["Accounts Receivable"] = {
2944
"options": 'Posting Date' + NEWLINE + 'Due Date',
3045
"default": "Posting Date"
3146
},
32-
{
33-
"fieldtype": "Break",
34-
},
3547
{
3648
"fieldname":"range1",
3749
"label": __("Ageing Range 1"),

erpnext/accounts/report/accounts_receivable/accounts_receivable.py

+26-7
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,10 @@ def get_columns(self, party_naming_by, args):
7171
"width": 100
7272
})
7373
if args.get("party_type") == "Customer":
74-
columns += [_("Territory") + ":Link/Territory:80"]
74+
columns += [
75+
_("Territory") + ":Link/Territory:80",
76+
_("Customer Group") + ":Link/Customer Group:120"
77+
]
7578
if args.get("party_type") == "Supplier":
7679
columns += [_("Supplier Type") + ":Link/Supplier Type:80"]
7780

@@ -139,7 +142,7 @@ def get_data(self, party_naming_by, args):
139142

140143
# customer territory / supplier type
141144
if args.get("party_type") == "Customer":
142-
row += [self.get_territory(gle.party)]
145+
row += [self.get_territory(gle.party), self.get_customer_group(gle.party)]
143146
if args.get("party_type") == "Supplier":
144147
row += [self.get_supplier_type(gle.party)]
145148

@@ -186,19 +189,22 @@ def get_party_name(self, party_type, party_name):
186189

187190
def get_territory(self, party_name):
188191
return self.get_party_map("Customer").get(party_name, {}).get("territory") or ""
192+
193+
def get_customer_group(self, party_name):
194+
return self.get_party_map("Customer").get(party_name, {}).get("customer_group") or ""
189195

190196
def get_supplier_type(self, party_name):
191197
return self.get_party_map("Supplier").get(party_name, {}).get("supplier_type") or ""
192198

193199
def get_party_map(self, party_type):
194200
if not hasattr(self, "party_map"):
195201
if party_type == "Customer":
196-
self.party_map = dict(((r.name, r) for r in frappe.db.sql("""select {0}, {1}, {2} from `tab{3}`"""
197-
.format("name", "customer_name", "territory", party_type), as_dict=True)))
198-
202+
select_fields = "name, customer_name, territory, customer_group"
199203
elif party_type == "Supplier":
200-
self.party_map = dict(((r.name, r) for r in frappe.db.sql("""select {0}, {1}, {2} from `tab{3}`"""
201-
.format("name", "supplier_name", "supplier_type", party_type), as_dict=True)))
204+
select_fields = "name, supplier_name, supplier_type"
205+
206+
self.party_map = dict(((r.name, r) for r in frappe.db.sql("select {0} from `tab{1}`"
207+
.format(select_fields, party_type), as_dict=True)))
202208

203209
return self.party_map
204210

@@ -251,6 +257,19 @@ def prepare_conditions(self, party_type):
251257
conditions.append("party=%s")
252258
values.append(self.filters.get(party_type_field))
253259

260+
if party_type_field=="customer":
261+
if self.filters.get("customer_group"):
262+
lft, rgt = frappe.db.get_value("Customer Group",
263+
self.filters.get("customer_group"), ["lft", "rgt"])
264+
265+
conditions.append("""party in (select name from tabCustomer
266+
where exists(select name from `tabCustomer Group` where lft >= {0} and rgt <= {1}
267+
and name=tabCustomer.customer_group))""".format(lft, rgt))
268+
269+
if self.filters.get("credit_days_based_on"):
270+
conditions.append("party in (select name from tabCustomer where credit_days_based_on=%s)")
271+
values.append(self.filters.get("credit_days_based_on"))
272+
254273
return " and ".join(conditions), values
255274

256275
def get_gl_entries_for(self, party, party_type, against_voucher_type, against_voucher):

erpnext/accounts/report/accounts_receivable_summary/accounts_receivable_summary.js

+15-3
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,21 @@ frappe.query_reports["Accounts Receivable Summary"] = {
1616
"fieldtype": "Link",
1717
"options": "Customer"
1818
},
19+
{
20+
"fieldname":"customer_group",
21+
"label": __("Customer Group"),
22+
"fieldtype": "Link",
23+
"options": "Customer Group"
24+
},
25+
{
26+
"fieldname":"credit_days_based_on",
27+
"label": __("Credit Days Based On"),
28+
"fieldtype": "Select",
29+
"options": "" + NEWLINE + "Fixed Days" + NEWLINE + "Last Day of the Next Month"
30+
},
31+
{
32+
"fieldtype": "Break",
33+
},
1934
{
2035
"fieldname":"report_date",
2136
"label": __("Date"),
@@ -29,9 +44,6 @@ frappe.query_reports["Accounts Receivable Summary"] = {
2944
"options": 'Posting Date' + NEWLINE + 'Due Date',
3045
"default": "Posting Date"
3146
},
32-
{
33-
"fieldtype": "Break",
34-
},
3547
{
3648
"fieldname":"range1",
3749
"label": __("Ageing Range 1"),

erpnext/accounts/report/accounts_receivable_summary/accounts_receivable_summary.py

+6-3
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,10 @@ def get_columns(self, party_naming_by, args):
2727
str(self.filters.range3) + _("-Above") + ":Currency/currency:100"]
2828

2929
if args.get("party_type") == "Customer":
30-
columns += [_("Territory") + ":Link/Territory:80"]
30+
columns += [
31+
_("Territory") + ":Link/Territory:80",
32+
_("Customer Group") + ":Link/Customer Group:120"
33+
]
3134
if args.get("party_type") == "Supplier":
3235
columns += [_("Supplier Type") + ":Link/Supplier Type:80"]
3336

@@ -58,7 +61,7 @@ def get_data(self, party_naming_by, args):
5861
]
5962

6063
if args.get("party_type") == "Customer":
61-
row += [self.get_territory(party)]
64+
row += [self.get_territory(party), self.get_customer_group(party)]
6265
if args.get("party_type") == "Supplier":
6366
row += [self.get_supplier_type(party)]
6467

@@ -107,7 +110,7 @@ def get_voucherwise_data(self, party_naming_by, args):
107110
if args.get("party_type") == "Supplier":
108111
cols += ["supplier_type", "remarks"]
109112
if args.get("party_type") == "Customer":
110-
cols += ["territory", "remarks"]
113+
cols += ["territory", "customer_group", "remarks"]
111114

112115
return self.make_data_dict(cols, voucherwise_data)
113116

erpnext/accounts/utils.py

+10-11
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,13 @@
44
from __future__ import unicode_literals
55

66
import frappe
7+
import frappe.defaults
78
from frappe.utils import nowdate, cstr, flt, cint, now, getdate
89
from frappe import throw, _
9-
from frappe.utils import formatdate
10+
from frappe.utils import formatdate, get_number_format_info
1011

1112
# imported to enable erpnext.accounts.utils.get_account_currency
1213
from erpnext.accounts.doctype.account.account import get_account_currency
13-
import frappe.defaults
1414
from erpnext.accounts.report.financial_statements import sort_root_accounts
1515

1616
class FiscalYearError(frappe.ValidationError): pass
@@ -537,15 +537,14 @@ def get_stock_and_account_difference(account_list=None, posting_date=None):
537537

538538
return difference
539539

540-
def get_currency_precision(currency=None):
541-
if not currency:
542-
currency = frappe.db.get_value("Company",
543-
frappe.db.get_default("Company"), "default_currency", cache=True)
544-
currency_format = frappe.db.get_value("Currency", currency, "number_format", cache=True)
545-
546-
from frappe.utils import get_number_format_info
547-
return get_number_format_info(currency_format)[2]
548-
540+
def get_currency_precision():
541+
precision = cint(frappe.db.get_default("currency_precision"))
542+
if not precision:
543+
number_format = frappe.db.get_default("number_format") or "#,###.##"
544+
precision = get_number_format_info(number_format)[2]
545+
546+
return precision
547+
549548
def get_stock_rbnb_difference(posting_date, company):
550549
stock_items = frappe.db.sql_list("""select distinct item_code
551550
from `tabStock Ledger Entry` where company=%s""", company)

erpnext/buying/doctype/purchase_order_item/purchase_order_item.json

+2-2
Original file line numberDiff line numberDiff line change
@@ -800,7 +800,7 @@
800800
"oldfieldtype": "Currency",
801801
"options": "Company:company:default_currency",
802802
"permlevel": 0,
803-
"precision": "9",
803+
"precision": "",
804804
"print_hide": 1,
805805
"print_hide_if_no_value": 0,
806806
"print_width": "100px",
@@ -1659,7 +1659,7 @@
16591659
"issingle": 0,
16601660
"istable": 1,
16611661
"max_attachments": 0,
1662-
"modified": "2017-04-18 18:49:08.604055",
1662+
"modified": "2017-04-25 18:49:08.604055",
16631663
"modified_by": "Administrator",
16641664
"module": "Buying",
16651665
"name": "Purchase Order Item",

erpnext/hr/doctype/expense_claim/expense_claim.js

+8-2
Original file line numberDiff line numberDiff line change
@@ -18,14 +18,20 @@ erpnext.hr.ExpenseClaimController = frappe.ui.form.Controller.extend({
1818
});
1919
},
2020

21-
expense_type: function(frm, cdt, cdn) {
21+
expense_type: function(doc, cdt, cdn) {
2222
var d = locals[cdt][cdn];
23+
if(!doc.company) {
24+
d.expense_type = "";
25+
frappe.msgprint(__("Please set the Company"));
26+
this.frm.refresh_fields()
27+
return;
28+
}
2329

2430
return frappe.call({
2531
method: "erpnext.hr.doctype.expense_claim.expense_claim.get_expense_claim_account",
2632
args: {
2733
"expense_claim_type": d.expense_type,
28-
"company": frm.company
34+
"company": doc.company
2935
},
3036
callback: function(r) {
3137
if (r.message) {

erpnext/patches.txt

+1
Original file line numberDiff line numberDiff line change
@@ -389,3 +389,4 @@ erpnext.patches.v8_0.rename_is_sample_item_to_allow_zero_valuation_rate
389389
erpnext.patches.v8_0.set_null_to_serial_nos_for_disabled_sales_invoices
390390
erpnext.patches.v8_0.enable_booking_asset_depreciation_automatically
391391
erpnext.patches.v8_0.set_project_copied_from
392+
erpnext.patches.v8_0.update_status_as_paid_for_completed_expense_claim
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. and Contributors
2+
# License: GNU General Public License v3. See license.txt
3+
4+
from __future__ import unicode_literals
5+
import frappe
6+
7+
def execute():
8+
""" set status as Paid in Expense Claim if total_sactioned_amount
9+
and total_amount_reimbursed is equal """
10+
11+
frappe.db.sql("""
12+
update
13+
`tabExpense Claim`
14+
set status = 'Paid'
15+
where
16+
total_sanctioned_amount = total_amount_reimbursed
17+
""")

erpnext/public/css/erpnext.css

+3
Original file line numberDiff line numberDiff line change
@@ -297,6 +297,9 @@ body[data-route="pos"] .item-list {
297297
body[data-route="pos"] .item-list .image-field {
298298
height: 140px;
299299
}
300+
body[data-route="pos"] .item-list .image-field .placeholder-text {
301+
font-size: 50px;
302+
}
300303
body[data-route="pos"] .item-list .pos-item-wrapper {
301304
position: relative;
302305
}

erpnext/public/less/erpnext.less

+4
Original file line numberDiff line numberDiff line change
@@ -351,6 +351,10 @@ body[data-route="pos"] {
351351

352352
.image-field {
353353
height: 140px;
354+
355+
.placeholder-text {
356+
font-size: 50px;
357+
}
354358
}
355359

356360
.pos-item-wrapper {

erpnext/schools/doctype/assessment_plan/assessment_plan.js

+2-1
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,8 @@ frappe.ui.form.on("Assessment Plan", {
1111
if (frm.doc.docstatus == 1) {
1212
frm.add_custom_button(__("Assessment Result"), function() {
1313
frappe.route_options = {
14-
assessment_plan: frm.doc.name
14+
assessment_plan: frm.doc.name,
15+
student_batch: frm.doc.student_batch
1516
}
1617
frappe.set_route("Form", "Assessment Result Tool");
1718
});

0 commit comments

Comments
 (0)