Merge branch 'develop'
diff --git a/erpnext/__version__.py b/erpnext/__version__.py
index 1f6e830..4d1f63e 100644
--- a/erpnext/__version__.py
+++ b/erpnext/__version__.py
@@ -1,2 +1,2 @@
from __future__ import unicode_literals
-__version__ = '5.0.17'
+__version__ = '5.0.18'
diff --git a/erpnext/accounts/doctype/bank_reconciliation/bank_reconciliation.js b/erpnext/accounts/doctype/bank_reconciliation/bank_reconciliation.js
index c39550b..cd9d9d0 100644
--- a/erpnext/accounts/doctype/bank_reconciliation/bank_reconciliation.js
+++ b/erpnext/accounts/doctype/bank_reconciliation/bank_reconciliation.js
@@ -2,6 +2,10 @@
// License: GNU General Public License v3. See license.txt
frappe.ui.form.on("Bank Reconciliation", {
+ refresh: function(frm) {
+ frm.disable_save();
+ },
+
update_clearance_date: function(frm) {
return frappe.call({
method: "update_details",
@@ -33,5 +37,4 @@
cur_frm.set_value("from_date", frappe.datetime.month_start());
cur_frm.set_value("to_date", frappe.datetime.month_end());
-}
-
+}
\ No newline at end of file
diff --git a/erpnext/accounts/doctype/bank_reconciliation/bank_reconciliation.py b/erpnext/accounts/doctype/bank_reconciliation/bank_reconciliation.py
index fa178fe..7dd021e 100644
--- a/erpnext/accounts/doctype/bank_reconciliation/bank_reconciliation.py
+++ b/erpnext/accounts/doctype/bank_reconciliation/bank_reconciliation.py
@@ -25,7 +25,8 @@
where
t2.parent = t1.name and t2.account = %s
and t1.posting_date >= %s and t1.posting_date <= %s and t1.docstatus=1
- and ifnull(t1.is_opening, 'No') = 'No' %s""" %
+ and ifnull(t1.is_opening, 'No') = 'No' %s
+ order by t1.posting_date""" %
('%s', '%s', '%s', condition), (self.bank_account, self.from_date, self.to_date), as_dict=1)
self.set('journal_entries', [])
diff --git a/erpnext/accounts/doctype/journal_entry/journal_entry.py b/erpnext/accounts/doctype/journal_entry/journal_entry.py
index 1f296e5..efbd1e9 100644
--- a/erpnext/accounts/doctype/journal_entry/journal_entry.py
+++ b/erpnext/accounts/doctype/journal_entry/journal_entry.py
@@ -3,7 +3,7 @@
from __future__ import unicode_literals
import frappe
-from frappe.utils import cstr, flt, fmt_money, formatdate, getdate, cint
+from frappe.utils import cstr, flt, fmt_money, formatdate, getdate
from frappe import msgprint, _, scrub
from erpnext.setup.utils import get_company_currency
from erpnext.controllers.accounts_controller import AccountsController
@@ -428,12 +428,11 @@
def validate_expense_claim(self):
for d in self.accounts:
if d.against_expense_claim:
- sanctioned_amount, reimbursed_amount = frappe.db.get_value("Expense Claim", d.against_expense_claim,
- ("total_sanctioned_amount", "total_amount_reimbursed"))
- pending_amount = cint(sanctioned_amount) - cint(reimbursed_amount)
+ sanctioned_amount, reimbursed_amount = frappe.db.get_value("Expense Claim",
+ d.against_expense_claim, ("total_sanctioned_amount", "total_amount_reimbursed"))
+ pending_amount = flt(sanctioned_amount) - flt(reimbursed_amount)
if d.debit > pending_amount:
- frappe.throw(_("Row No {0}: Amount cannot be greater than Pending Amount against Expense Claim {1}. \
- Pending Amount is {2}".format(d.idx, d.against_expense_claim, pending_amount)))
+ frappe.throw(_("Row No {0}: Amount cannot be greater than Pending Amount against Expense Claim {1}. Pending Amount is {2}".format(d.idx, d.against_expense_claim, pending_amount)))
def validate_credit_debit_note(self):
if self.stock_entry:
diff --git a/erpnext/accounts/doctype/payment_reconciliation/payment_reconciliation.js b/erpnext/accounts/doctype/payment_reconciliation/payment_reconciliation.js
index 71df6cf..1355ea4 100644
--- a/erpnext/accounts/doctype/payment_reconciliation/payment_reconciliation.js
+++ b/erpnext/accounts/doctype/payment_reconciliation/payment_reconciliation.js
@@ -44,6 +44,10 @@
}
});
},
+
+ refresh: function() {
+ this.frm.disable_save();
+ },
party: function() {
var me = this
diff --git a/erpnext/accounts/doctype/payment_tool/payment_tool.js b/erpnext/accounts/doctype/payment_tool/payment_tool.js
index cff0bd2..6eefdb9 100644
--- a/erpnext/accounts/doctype/payment_tool/payment_tool.js
+++ b/erpnext/accounts/doctype/payment_tool/payment_tool.js
@@ -32,6 +32,7 @@
});
frappe.ui.form.on("Payment Tool", "refresh", function(frm) {
+ frm.disable_save();
frappe.ui.form.trigger("Payment Tool", "party_type");
});
diff --git a/erpnext/accounts/doctype/payment_tool/payment_tool.json b/erpnext/accounts/doctype/payment_tool/payment_tool.json
index 909f9c4..15cdb98 100644
--- a/erpnext/accounts/doctype/payment_tool/payment_tool.json
+++ b/erpnext/accounts/doctype/payment_tool/payment_tool.json
@@ -312,7 +312,7 @@
"is_submittable": 0,
"issingle": 1,
"istable": 0,
- "modified": "2015-02-21 03:59:08.154966",
+ "modified": "2015-06-05 11:17:33.843334",
"modified_by": "Administrator",
"module": "Accounts",
"name": "Payment Tool",
diff --git a/erpnext/accounts/page/pos/pos_page.html b/erpnext/accounts/page/pos/pos_page.html
index 98cce00..5a4c538 100644
--- a/erpnext/accounts/page/pos/pos_page.html
+++ b/erpnext/accounts/page/pos/pos_page.html
@@ -9,7 +9,7 @@
<button class="btn btn-primary btn-lg">{%= __("Start") %}</button>
</p>
<p class="pos-setting-message hide">
- <a class="btn btn-default btn-sm" href="#Form/POS Setting/New POS Setting">
- {%= __("Make new POS Setting") %}</a>
+ <a class="btn btn-default btn-sm" href="#Form/POS Profile/New POS Profile">
+ {%= __("Make new POS Profile") %}</a>
</p>
</div>
diff --git a/erpnext/accounts/report/gross_profit/gross_profit.py b/erpnext/accounts/report/gross_profit/gross_profit.py
index dd7def8..716cc3d 100644
--- a/erpnext/accounts/report/gross_profit/gross_profit.py
+++ b/erpnext/accounts/report/gross_profit/gross_profit.py
@@ -14,7 +14,7 @@
source = gross_profit_data.grouped_data if filters.get("group_by") != "Invoice" else gross_profit_data.data
group_wise_columns = frappe._dict({
- "invoice": ["parent", "posting_date", "posting_time", "item_code", "item_name", "brand", "description", \
+ "invoice": ["parent", "customer", "posting_date", "posting_time", "item_code", "item_name", "brand", "description", \
"warehouse", "qty", "base_rate", "buying_rate", "base_amount",
"buying_amount", "gross_profit", "gross_profit_percent", "project"],
"item_code": ["item_code", "item_name", "brand", "description", "warehouse", "qty", "base_rate",
diff --git a/erpnext/hooks.py b/erpnext/hooks.py
index 73afe89..dd46af3 100644
--- a/erpnext/hooks.py
+++ b/erpnext/hooks.py
@@ -5,7 +5,7 @@
app_description = "Open Source Enterprise Resource Planning for Small and Midsized Organizations"
app_icon = "icon-th"
app_color = "#e74c3c"
-app_version = "5.0.17"
+app_version = "5.0.18"
error_report_email = "support@erpnext.com"
diff --git a/erpnext/hr/doctype/leave_control_panel/leave_control_panel.js b/erpnext/hr/doctype/leave_control_panel/leave_control_panel.js
index 8ab893a..3720f2f 100644
--- a/erpnext/hr/doctype/leave_control_panel/leave_control_panel.js
+++ b/erpnext/hr/doctype/leave_control_panel/leave_control_panel.js
@@ -24,4 +24,8 @@
cur_frm.cscript.allocation_type = function (doc, cdt, cdn){
doc.no_of_days = '';
refresh_field('no_of_days');
-}
\ No newline at end of file
+}
+
+frappe.ui.form.on("Leave Control Panel", "refresh", function(frm) {
+ frm.disable_save();
+});
\ No newline at end of file
diff --git a/erpnext/hr/doctype/leave_control_panel/leave_control_panel.json b/erpnext/hr/doctype/leave_control_panel/leave_control_panel.json
index 2eb4eb6..dead10b 100644
--- a/erpnext/hr/doctype/leave_control_panel/leave_control_panel.json
+++ b/erpnext/hr/doctype/leave_control_panel/leave_control_panel.json
@@ -94,11 +94,11 @@
}
],
"hide_heading": 0,
- "hide_toolbar": 0,
+ "hide_toolbar": 1,
"icon": "icon-cog",
"idx": 1,
"issingle": 1,
- "modified": "2015-02-05 05:11:40.791976",
+ "modified": "2015-06-05 11:38:19.994852",
"modified_by": "Administrator",
"module": "HR",
"name": "Leave Control Panel",
@@ -110,7 +110,7 @@
"read": 1,
"report": 0,
"role": "HR User",
- "share": 1,
+ "share": 0,
"submit": 0,
"write": 1
}
diff --git a/erpnext/hr/doctype/salary_manager/salary_manager.js b/erpnext/hr/doctype/salary_manager/salary_manager.js
index 834f5d4..240547c 100644
--- a/erpnext/hr/doctype/salary_manager/salary_manager.js
+++ b/erpnext/hr/doctype/salary_manager/salary_manager.js
@@ -43,3 +43,8 @@
frappe.set_route("Form", doc.doctype, doc.name);
});
}
+
+
+frappe.ui.form.on("Salary Manager", "refresh", function(frm) {
+ frm.disable_save();
+});
\ No newline at end of file
diff --git a/erpnext/hr/doctype/salary_manager/salary_manager.json b/erpnext/hr/doctype/salary_manager/salary_manager.json
index 21560a4..93ee138 100644
--- a/erpnext/hr/doctype/salary_manager/salary_manager.json
+++ b/erpnext/hr/doctype/salary_manager/salary_manager.json
@@ -150,10 +150,11 @@
"permlevel": 0
}
],
+ "hide_toolbar": 1,
"icon": "icon-cog",
"idx": 1,
"issingle": 1,
- "modified": "2015-02-25 07:21:04.778082",
+ "modified": "2015-06-05 11:33:00.152362",
"modified_by": "Administrator",
"module": "HR",
"name": "Salary Manager",
diff --git a/erpnext/hr/doctype/upload_attendance/upload_attendance.js b/erpnext/hr/doctype/upload_attendance/upload_attendance.js
index c0c8490..47ffec0 100644
--- a/erpnext/hr/doctype/upload_attendance/upload_attendance.js
+++ b/erpnext/hr/doctype/upload_attendance/upload_attendance.js
@@ -12,6 +12,7 @@
},
refresh: function() {
+ this.frm.disable_save();
this.show_upload();
},
diff --git a/erpnext/hr/doctype/upload_attendance/upload_attendance.json b/erpnext/hr/doctype/upload_attendance/upload_attendance.json
index 195879d..ab18f5d 100644
--- a/erpnext/hr/doctype/upload_attendance/upload_attendance.json
+++ b/erpnext/hr/doctype/upload_attendance/upload_attendance.json
@@ -1,4 +1,5 @@
{
+ "allow_copy": 1,
"creation": "2013-01-25 11:34:53",
"docstatus": 0,
"doctype": "DocType",
@@ -53,11 +54,13 @@
"permlevel": 0
}
],
+ "hide_heading": 0,
+ "hide_toolbar": 1,
"icon": "icon-upload-alt",
"idx": 1,
"issingle": 1,
"max_attachments": 1,
- "modified": "2015-02-05 05:11:48.540845",
+ "modified": "2015-06-05 11:37:04.348120",
"modified_by": "Administrator",
"module": "HR",
"name": "Upload Attendance",
@@ -65,25 +68,25 @@
"permissions": [
{
"create": 1,
- "email": 1,
+ "email": 0,
"permlevel": 0,
- "print": 1,
+ "print": 0,
"read": 1,
"report": 0,
"role": "HR User",
- "share": 1,
+ "share": 0,
"submit": 0,
"write": 1
},
{
"create": 1,
- "email": 1,
+ "email": 0,
"permlevel": 0,
- "print": 1,
+ "print": 0,
"read": 1,
"report": 0,
"role": "HR Manager",
- "share": 1,
+ "share": 0,
"submit": 0,
"write": 1
}
diff --git a/erpnext/manufacturing/doctype/production_planning_tool/production_planning_tool.json b/erpnext/manufacturing/doctype/production_planning_tool/production_planning_tool.json
index f2c7cc7..e0ac26c 100644
--- a/erpnext/manufacturing/doctype/production_planning_tool/production_planning_tool.json
+++ b/erpnext/manufacturing/doctype/production_planning_tool/production_planning_tool.json
@@ -1,4 +1,5 @@
{
+ "allow_copy": 1,
"creation": "2013-01-21 12:03:47",
"default_print_format": "Standard",
"docstatus": 0,
@@ -154,11 +155,12 @@
"permlevel": 0
}
],
+ "hide_toolbar": 1,
"icon": "icon-calendar",
"idx": 1,
"in_create": 1,
"issingle": 1,
- "modified": "2015-02-05 05:11:43.010625",
+ "modified": "2015-06-05 11:44:31.629114",
"modified_by": "Administrator",
"module": "Manufacturing",
"name": "Production Planning Tool",
diff --git a/erpnext/patches.txt b/erpnext/patches.txt
index 729221a..2104f7b 100644
--- a/erpnext/patches.txt
+++ b/erpnext/patches.txt
@@ -163,3 +163,5 @@
erpnext.patches.v5_0.update_item_and_description_again
erpnext.patches.v5_0.repost_gle_for_jv_with_multiple_party
erpnext.patches.v5_0.portal_fixes
+erpnext.patches.v5_0.reset_values_in_tools
+execute:frappe.delete_doc("Page", "users")
\ No newline at end of file
diff --git a/erpnext/patches/v5_0/reset_values_in_tools.py b/erpnext/patches/v5_0/reset_values_in_tools.py
new file mode 100644
index 0000000..2825e4f
--- /dev/null
+++ b/erpnext/patches/v5_0/reset_values_in_tools.py
@@ -0,0 +1,11 @@
+# Copyright (c) 2013, Frappe Technologies Pvt. Ltd. and Contributors
+# License: GNU General Public License v3. See license.txt
+
+from __future__ import unicode_literals
+import frappe
+
+def execute():
+ for dt in ["Payment Tool", "Bank Reconciliation", "Payment Reconciliation", "Leave Control Panel",
+ "Salary Manager", "Upload Attenadance", "Production Planning Tool", "BOM Replace Tool"]:
+ frappe.db.sql("delete from `tabSingles` where doctype=%s", dt)
+
\ No newline at end of file
diff --git a/erpnext/projects/doctype/time_log/time_log.py b/erpnext/projects/doctype/time_log/time_log.py
index f7b501d..a0fa23b 100644
--- a/erpnext/projects/doctype/time_log/time_log.py
+++ b/erpnext/projects/doctype/time_log/time_log.py
@@ -195,8 +195,6 @@
if self.for_manufacturing:
if not self.production_order:
frappe.throw(_("Production Order is Mandatory"))
- if not self.operation:
- frappe.throw(_("Operation is Mandatory"))
if not self.completed_qty:
self.completed_qty = 0
diff --git a/erpnext/stock/doctype/item/test_item.py b/erpnext/stock/doctype/item/test_item.py
index 33778c9..02ff714 100644
--- a/erpnext/stock/doctype/item/test_item.py
+++ b/erpnext/stock/doctype/item/test_item.py
@@ -90,7 +90,7 @@
"income_account": "Sales - _TC",
"expense_account": "_Test Account Cost for Goods Sold - _TC",
"cost_center": "_Test Cost Center 2 - _TC",
- "qty": 0.0,
+ "qty": 1.0,
"price_list_rate": 100.0,
"base_price_list_rate": 0.0,
"discount_percentage": 0.0,
diff --git a/erpnext/templates/form_grid/includes/visible_cols.html b/erpnext/templates/form_grid/includes/visible_cols.html
index 285c125..e9be40c 100644
--- a/erpnext/templates/form_grid/includes/visible_cols.html
+++ b/erpnext/templates/form_grid/includes/visible_cols.html
@@ -1,6 +1,6 @@
{% $.each(visible_columns || [], function(i, df) { %}
{% var val = doc.get_formatted(df.fieldname);
- if(val) { %}
+ if((df.fieldname !== "description") && val) { %}
<div class="row">
<div class="col-xs-4 text-ellipsis">
<strong title="{%= __(df.label) %}">{%= __(df.label) %}:</strong>
diff --git a/erpnext/templates/form_grid/item_grid.html b/erpnext/templates/form_grid/item_grid.html
index 9905f99..8ea3e7d 100644
--- a/erpnext/templates/form_grid/item_grid.html
+++ b/erpnext/templates/form_grid/item_grid.html
@@ -47,6 +47,12 @@
{% if(doc.item_name != doc.item_code) { %}
<br>{%= doc.item_name %}{% } %}
+
+ {% if((doc.description != doc.item_code != doc.item_name) &&
+ in_list($.map(visible_columns, function(x, i) {return x.fieldname}), "description")) { %}
+ <br>
+ <strong>Description: </strong>
+ {%= doc.get_formatted("description") %}{% } %}
{% include "templates/form_grid/includes/visible_cols.html" %}
</div>
diff --git a/setup.py b/setup.py
index 96539e8..d4a9356 100644
--- a/setup.py
+++ b/setup.py
@@ -1,6 +1,6 @@
from setuptools import setup, find_packages
-version = "5.0.17"
+version = "5.0.18"
with open("requirements.txt", "r") as f:
install_requires = f.readlines()