diff --git a/erpnext/__version__.py b/erpnext/__version__.py
index c40beacc1f1..978f6b0de6d 100644
--- a/erpnext/__version__.py
+++ b/erpnext/__version__.py
@@ -1,2 +1,2 @@
from __future__ import unicode_literals
-__version__ = '6.15.1'
+__version__ = '6.16.0'
diff --git a/erpnext/accounts/doctype/fiscal_year/fiscal_year.py b/erpnext/accounts/doctype/fiscal_year/fiscal_year.py
index 4a2166ce4bc..9456924a87a 100644
--- a/erpnext/accounts/doctype/fiscal_year/fiscal_year.py
+++ b/erpnext/accounts/doctype/fiscal_year/fiscal_year.py
@@ -20,14 +20,15 @@ class FiscalYear(Document):
msgprint(_("{0} is now the default Fiscal Year. Please refresh your browser for the change to take effect.").format(self.name))
def validate(self):
- year_start_end_dates = frappe.db.sql("""select year_start_date, year_end_date
- from `tabFiscal Year` where name=%s""", (self.name))
-
self.validate_dates()
- if year_start_end_dates:
- if getdate(self.year_start_date) != year_start_end_dates[0][0] or getdate(self.year_end_date) != year_start_end_dates[0][1]:
- frappe.throw(_("Cannot change Fiscal Year Start Date and Fiscal Year End Date once the Fiscal Year is saved."))
+ if not self.is_new():
+ year_start_end_dates = frappe.db.sql("""select year_start_date, year_end_date
+ from `tabFiscal Year` where name=%s""", (self.name))
+
+ if year_start_end_dates:
+ if getdate(self.year_start_date) != year_start_end_dates[0][0] or getdate(self.year_end_date) != year_start_end_dates[0][1]:
+ frappe.throw(_("Cannot change Fiscal Year Start Date and Fiscal Year End Date once the Fiscal Year is saved."))
def validate_dates(self):
if getdate(self.year_start_date) > getdate(self.year_end_date):
@@ -62,7 +63,7 @@ def auto_create_fiscal_year():
start_year = cstr(new_fy.year_start_date.year)
end_year = cstr(new_fy.year_end_date.year)
new_fy.year = start_year if start_year==end_year else (start_year + "-" + end_year)
-
+
new_fy.insert(ignore_permissions=True)
except frappe.NameError:
pass
diff --git a/erpnext/accounts/doctype/payment_reconciliation/payment_reconciliation.js b/erpnext/accounts/doctype/payment_reconciliation/payment_reconciliation.js
index eb84cb0c85d..5075f159e35 100644
--- a/erpnext/accounts/doctype/payment_reconciliation/payment_reconciliation.js
+++ b/erpnext/accounts/doctype/payment_reconciliation/payment_reconciliation.js
@@ -47,6 +47,11 @@ erpnext.accounts.PaymentReconciliationController = frappe.ui.form.Controller.ext
refresh: function() {
this.frm.disable_save();
+ this.toggle_primary_action();
+ },
+
+ onload_post_render: function() {
+ this.toggle_primary_action();
},
party: function() {
@@ -75,6 +80,7 @@ erpnext.accounts.PaymentReconciliationController = frappe.ui.form.Controller.ext
method: 'get_unreconciled_entries',
callback: function(r, rt) {
me.set_invoice_options();
+ me.toggle_primary_action();
}
});
@@ -87,10 +93,11 @@ erpnext.accounts.PaymentReconciliationController = frappe.ui.form.Controller.ext
method: 'reconcile',
callback: function(r, rt) {
me.set_invoice_options();
+ me.toggle_primary_action();
}
});
},
-
+
set_invoice_options: function() {
var invoices = [];
@@ -107,6 +114,20 @@ erpnext.accounts.PaymentReconciliationController = frappe.ui.form.Controller.ext
});
refresh_field("payments");
+ },
+
+ toggle_primary_action: function() {
+ if ((this.frm.doc.payments || []).length) {
+ this.frm.fields_dict.reconcile.$input
+ && this.frm.fields_dict.reconcile.$input.addClass("btn-primary");
+ this.frm.fields_dict.get_unreconciled_entries.$input
+ && this.frm.fields_dict.get_unreconciled_entries.$input.removeClass("btn-primary");
+ } else {
+ this.frm.fields_dict.reconcile.$input
+ && this.frm.fields_dict.reconcile.$input.removeClass("btn-primary");
+ this.frm.fields_dict.get_unreconciled_entries.$input
+ && this.frm.fields_dict.get_unreconciled_entries.$input.addClass("btn-primary");
+ }
}
});
diff --git a/erpnext/accounts/doctype/payment_reconciliation/payment_reconciliation.json b/erpnext/accounts/doctype/payment_reconciliation/payment_reconciliation.json
index c88928823d3..ef617b03996 100644
--- a/erpnext/accounts/doctype/payment_reconciliation/payment_reconciliation.json
+++ b/erpnext/accounts/doctype/payment_reconciliation/payment_reconciliation.json
@@ -19,10 +19,12 @@
"in_filter": 0,
"in_list_view": 0,
"label": "Company",
+ "length": 0,
"no_copy": 0,
"options": "Company",
"permlevel": 0,
"print_hide": 0,
+ "print_hide_if_no_value": 0,
"read_only": 0,
"report_hide": 0,
"reqd": 1,
@@ -41,10 +43,12 @@
"in_filter": 0,
"in_list_view": 0,
"label": "Party Type",
+ "length": 0,
"no_copy": 0,
"options": "DocType",
"permlevel": 0,
"print_hide": 0,
+ "print_hide_if_no_value": 0,
"read_only": 0,
"report_hide": 0,
"reqd": 1,
@@ -64,10 +68,12 @@
"in_filter": 0,
"in_list_view": 0,
"label": "Party",
+ "length": 0,
"no_copy": 0,
"options": "party_type",
"permlevel": 0,
"print_hide": 0,
+ "print_hide_if_no_value": 0,
"read_only": 0,
"report_hide": 0,
"reqd": 1,
@@ -86,11 +92,13 @@
"in_filter": 0,
"in_list_view": 0,
"label": "Receivable / Payable Account",
+ "length": 0,
"no_copy": 0,
"options": "Account",
"permlevel": 0,
"precision": "",
"print_hide": 0,
+ "print_hide_if_no_value": 0,
"read_only": 0,
"report_hide": 0,
"reqd": 1,
@@ -109,10 +117,12 @@
"in_filter": 0,
"in_list_view": 1,
"label": "Bank / Cash Account",
+ "length": 0,
"no_copy": 0,
"options": "Account",
"permlevel": 0,
"print_hide": 0,
+ "print_hide_if_no_value": 0,
"read_only": 0,
"report_hide": 0,
"reqd": 0,
@@ -131,9 +141,11 @@
"in_filter": 0,
"in_list_view": 0,
"label": "",
+ "length": 0,
"no_copy": 0,
"permlevel": 0,
"print_hide": 0,
+ "print_hide_if_no_value": 0,
"read_only": 0,
"report_hide": 0,
"reqd": 0,
@@ -151,10 +163,12 @@
"ignore_user_permissions": 0,
"in_filter": 0,
"in_list_view": 1,
- "label": "From Date",
+ "label": "From Invoice Date",
+ "length": 0,
"no_copy": 0,
"permlevel": 0,
"print_hide": 0,
+ "print_hide_if_no_value": 0,
"read_only": 0,
"report_hide": 0,
"reqd": 0,
@@ -172,10 +186,12 @@
"ignore_user_permissions": 0,
"in_filter": 0,
"in_list_view": 1,
- "label": "To Date",
+ "label": "To Invoice Date",
+ "length": 0,
"no_copy": 0,
"permlevel": 0,
"print_hide": 0,
+ "print_hide_if_no_value": 0,
"read_only": 0,
"report_hide": 0,
"reqd": 0,
@@ -193,10 +209,12 @@
"ignore_user_permissions": 0,
"in_filter": 0,
"in_list_view": 0,
- "label": "Minimum Amount",
+ "label": "Minimum Invoice Amount",
+ "length": 0,
"no_copy": 0,
"permlevel": 0,
"print_hide": 0,
+ "print_hide_if_no_value": 0,
"read_only": 0,
"report_hide": 0,
"reqd": 0,
@@ -214,10 +232,12 @@
"ignore_user_permissions": 0,
"in_filter": 0,
"in_list_view": 0,
- "label": "Maximum Amount",
+ "label": "Maximum Invoice Amount",
+ "length": 0,
"no_copy": 0,
"permlevel": 0,
"print_hide": 0,
+ "print_hide_if_no_value": 0,
"read_only": 0,
"report_hide": 0,
"reqd": 0,
@@ -236,9 +256,11 @@
"in_filter": 0,
"in_list_view": 0,
"label": "Get Unreconciled Entries",
+ "length": 0,
"no_copy": 0,
"permlevel": 0,
"print_hide": 0,
+ "print_hide_if_no_value": 0,
"read_only": 0,
"report_hide": 0,
"reqd": 0,
@@ -257,9 +279,11 @@
"in_filter": 0,
"in_list_view": 0,
"label": "Unreconciled Payment Details",
+ "length": 0,
"no_copy": 0,
"permlevel": 0,
"print_hide": 0,
+ "print_hide_if_no_value": 0,
"read_only": 0,
"report_hide": 0,
"reqd": 0,
@@ -278,10 +302,12 @@
"in_filter": 0,
"in_list_view": 0,
"label": "Payments",
+ "length": 0,
"no_copy": 0,
"options": "Payment Reconciliation Payment",
"permlevel": 0,
"print_hide": 0,
+ "print_hide_if_no_value": 0,
"read_only": 0,
"report_hide": 0,
"reqd": 0,
@@ -300,9 +326,11 @@
"in_filter": 0,
"in_list_view": 0,
"label": "Reconcile",
+ "length": 0,
"no_copy": 0,
"permlevel": 0,
"print_hide": 0,
+ "print_hide_if_no_value": 0,
"read_only": 0,
"report_hide": 0,
"reqd": 0,
@@ -321,9 +349,11 @@
"in_filter": 0,
"in_list_view": 0,
"label": "Invoice/Journal Entry Details",
+ "length": 0,
"no_copy": 0,
"permlevel": 0,
"print_hide": 0,
+ "print_hide_if_no_value": 0,
"read_only": 0,
"report_hide": 0,
"reqd": 0,
@@ -342,10 +372,12 @@
"in_filter": 0,
"in_list_view": 0,
"label": "Invoices",
+ "length": 0,
"no_copy": 0,
"options": "Payment Reconciliation Invoice",
"permlevel": 0,
"print_hide": 0,
+ "print_hide_if_no_value": 0,
"read_only": 1,
"report_hide": 0,
"reqd": 0,
@@ -357,12 +389,15 @@
"hide_heading": 0,
"hide_toolbar": 1,
"icon": "icon-resize-horizontal",
+ "idx": 0,
"in_create": 0,
"in_dialog": 0,
"is_submittable": 0,
"issingle": 1,
"istable": 0,
- "modified": "2015-09-21 03:41:24.672227",
+ "max_attachments": 0,
+ "menu_index": 0,
+ "modified": "2016-01-04 02:26:58.807921",
"modified_by": "Administrator",
"module": "Accounts",
"name": "Payment Reconciliation",
diff --git a/erpnext/accounts/doctype/payment_reconciliation/payment_reconciliation.py b/erpnext/accounts/doctype/payment_reconciliation/payment_reconciliation.py
index 83545561055..832a346ee0b 100644
--- a/erpnext/accounts/doctype/payment_reconciliation/payment_reconciliation.py
+++ b/erpnext/accounts/doctype/payment_reconciliation/payment_reconciliation.py
@@ -18,8 +18,6 @@ class PaymentReconciliation(Document):
dr_or_cr = "credit_in_account_currency" if self.party_type == "Customer" \
else "debit_in_account_currency"
- cond = self.check_condition()
-
bank_account_condition = "t2.against_account like %(bank_cash_account)s" \
if self.bank_cash_account else "1=1"
@@ -34,7 +32,6 @@ class PaymentReconciliation(Document):
and t2.party_type = %(party_type)s and t2.party = %(party)s
and t2.account = %(account)s and {dr_or_cr} > 0
and (t2.reference_type is null or t2.reference_type in ('', 'Sales Order', 'Purchase Order'))
- {cond}
and (CASE
WHEN t1.voucher_type in ('Debit Note', 'Credit Note')
THEN 1=1
@@ -42,7 +39,6 @@ class PaymentReconciliation(Document):
END)
""".format(**{
"dr_or_cr": dr_or_cr,
- "cond": cond,
"bank_account_condition": bank_account_condition,
}), {
"party_type": self.party_type,
@@ -158,8 +154,8 @@ class PaymentReconciliation(Document):
frappe.throw(_("Please select Allocated Amount, Invoice Type and Invoice Number in atleast one row"))
def check_condition(self):
- cond = " and posting_date >= {0}".format(frappe.db.escape(self.from_date)) if self.from_date else ""
- cond += " and posting_date <= {0}".format(frappe.db.escape(self.to_date)) if self.to_date else ""
+ cond = " and posting_date >= '{0}'".format(frappe.db.escape(self.from_date)) if self.from_date else ""
+ cond += " and posting_date <= '{0}'".format(frappe.db.escape(self.to_date)) if self.to_date else ""
if self.party_type == "Customer":
dr_or_cr = "debit_in_account_currency"
diff --git a/erpnext/docs/assets/img/accounts/multi-currency/customer.png b/erpnext/docs/assets/img/accounts/multi-currency/customer.png
index 35408c99d0b..da13dac08bb 100644
Binary files a/erpnext/docs/assets/img/accounts/multi-currency/customer.png and b/erpnext/docs/assets/img/accounts/multi-currency/customer.png differ
diff --git a/erpnext/docs/assets/img/human-resources/leave-allocation-tool.png b/erpnext/docs/assets/img/human-resources/leave-allocation-tool.png
new file mode 100644
index 00000000000..c79bd952b2b
Binary files /dev/null and b/erpnext/docs/assets/img/human-resources/leave-allocation-tool.png differ
diff --git a/erpnext/docs/assets/img/human-resources/leave-block-list.png b/erpnext/docs/assets/img/human-resources/leave-block-list.png
new file mode 100644
index 00000000000..bd0aa152a54
Binary files /dev/null and b/erpnext/docs/assets/img/human-resources/leave-block-list.png differ
diff --git a/erpnext/docs/assets/img/human-resources/manual-leave-allocation.png b/erpnext/docs/assets/img/human-resources/manual-leave-allocation.png
new file mode 100644
index 00000000000..67ad8144baa
Binary files /dev/null and b/erpnext/docs/assets/img/human-resources/manual-leave-allocation.png differ
diff --git a/erpnext/docs/assets/img/human-resources/new-leave-application.png b/erpnext/docs/assets/img/human-resources/new-leave-application.png
new file mode 100644
index 00000000000..e02b7ddc422
Binary files /dev/null and b/erpnext/docs/assets/img/human-resources/new-leave-application.png differ
diff --git a/erpnext/docs/assets/img/human-resources/new-leave-type.png b/erpnext/docs/assets/img/human-resources/new-leave-type.png
new file mode 100644
index 00000000000..3004b091ae1
Binary files /dev/null and b/erpnext/docs/assets/img/human-resources/new-leave-type.png differ
diff --git a/erpnext/docs/current/api/controllers/erpnext.controllers.item_variant.html b/erpnext/docs/current/api/controllers/erpnext.controllers.item_variant.html
index 3720e8227bd..39f6545929d 100644
--- a/erpnext/docs/current/api/controllers/erpnext.controllers.item_variant.html
+++ b/erpnext/docs/current/api/controllers/erpnext.controllers.item_variant.html
@@ -100,7 +100,7 @@
erpnext.controllers.item_variant.find_variant
- (item, args)
+ (template, args, variant_item_code=None)
@@ -118,7 +118,7 @@
erpnext.controllers.item_variant.get_variant
- (item, args)
+ (template, args, variant=None)
Validates Attributes and their Values, then looks for an exactly matching Item Variant
diff --git a/erpnext/docs/current/api/setup/erpnext.setup.install.html b/erpnext/docs/current/api/setup/erpnext.setup.install.html
index a1c18af0024..02c58d287e4 100644
--- a/erpnext/docs/current/api/setup/erpnext.setup.install.html
+++ b/erpnext/docs/current/api/setup/erpnext.setup.install.html
@@ -49,6 +49,22 @@
+
+
+
+ erpnext.setup.install.check_setup_wizard_not_completed
+ ()
+
+
+
+
+
+
+
+
+
+
diff --git a/erpnext/docs/current/api/setup/setup_wizard/erpnext.setup.setup_wizard.setup_wizard.html b/erpnext/docs/current/api/setup/setup_wizard/erpnext.setup.setup_wizard.setup_wizard.html
index 83a4a2390b6..db1c3f313cb 100644
--- a/erpnext/docs/current/api/setup/setup_wizard/erpnext.setup.setup_wizard.setup_wizard.html
+++ b/erpnext/docs/current/api/setup/setup_wizard/erpnext.setup.setup_wizard.setup_wizard.html
@@ -33,6 +33,22 @@
+
+
+
+ erpnext.setup.setup_wizard.setup_wizard.create_bank_account
+ (args)
+
+
+
+
+
+
+
+
+
+
diff --git a/erpnext/docs/current/index.html b/erpnext/docs/current/index.html
index 4247622382f..10582bef30c 100644
--- a/erpnext/docs/current/index.html
+++ b/erpnext/docs/current/index.html
@@ -35,7 +35,7 @@
Version
- 6.15.0
+ 6.15.1
|
diff --git a/erpnext/docs/current/models/accounts/account.html b/erpnext/docs/current/models/accounts/account.html
index 5b3103d65ca..bbc0203e32a 100644
--- a/erpnext/docs/current/models/accounts/account.html
+++ b/erpnext/docs/current/models/accounts/account.html
@@ -946,6 +946,10 @@ Credit
+
+
+
+
diff --git a/erpnext/docs/current/models/accounts/shipping_rule.html b/erpnext/docs/current/models/accounts/shipping_rule.html
index beadc90ff44..8f859cbc608 100644
--- a/erpnext/docs/current/models/accounts/shipping_rule.html
+++ b/erpnext/docs/current/models/accounts/shipping_rule.html
@@ -413,6 +413,15 @@ Net Weight
+
+
+
+
+Shopping Cart Shipping Rule
+
+
+
+
diff --git a/erpnext/docs/current/models/buying/purchase_order.html b/erpnext/docs/current/models/buying/purchase_order.html
index dc502d159c1..202cb44a10b 100644
--- a/erpnext/docs/current/models/buying/purchase_order.html
+++ b/erpnext/docs/current/models/buying/purchase_order.html
@@ -1583,6 +1583,20 @@ Yearly
+
+
+
+ is_against_so
+ (self)
+
+
+
+
+
+
+
+
diff --git a/erpnext/docs/current/models/setup/company.html b/erpnext/docs/current/models/setup/company.html
index bafb0191aeb..27e22949660 100644
--- a/erpnext/docs/current/models/setup/company.html
+++ b/erpnext/docs/current/models/setup/company.html
@@ -111,7 +111,8 @@ Legal Entity / Subsidiary with a separate Chart of Accounts belonging to the Org
Distribution
Manufacturing
Retail
-Services
+Services
+Education
diff --git a/erpnext/docs/current/models/stock/delivery_note.html b/erpnext/docs/current/models/stock/delivery_note.html
index 64a872b0061..2213e24150c 100644
--- a/erpnext/docs/current/models/stock/delivery_note.html
+++ b/erpnext/docs/current/models/stock/delivery_note.html
@@ -1316,8 +1316,20 @@ Campaign
-
+
| 86 |
+ per_billed |
+
+ Currency |
+
+ % Amount Billed
+
+ |
+ |
+
+
+
+ | 87 |
printing_details |
Section Break |
@@ -1329,7 +1341,7 @@ Campaign
- | 87 |
+ 88 |
letter_head |
Link |
@@ -1350,7 +1362,7 @@ Campaign
- | 88 |
+ 89 |
select_print_heading |
Link |
@@ -1371,7 +1383,7 @@ Campaign
- | 89 |
+ 90 |
column_break_88 |
Column Break |
@@ -1383,7 +1395,7 @@ Campaign
- | 90 |
+ 91 |
print_without_amount |
Check |
@@ -1395,7 +1407,7 @@ Campaign
- | 91 |
+ 92 |
section_break_83 |
Section Break |
@@ -1407,7 +1419,7 @@ Campaign
- | 92 |
+ 93 |
status |
Select |
@@ -1418,14 +1430,15 @@ Campaign
Draft
-Submitted
+To Bill
+Completed
Cancelled
Closed
|
- | 93 |
+ 94 |
per_installed |
Percent |
@@ -1438,7 +1451,7 @@ Closed
- | 94 |
+ 95 |
installation_status |
Select |
@@ -1450,7 +1463,7 @@ Closed
- | 95 |
+ 96 |
column_break_89 |
Column Break |
@@ -1462,7 +1475,7 @@ Closed
- | 96 |
+ 97 |
to_warehouse |
Link |
@@ -1484,7 +1497,7 @@ Closed
- | 97 |
+ 98 |
excise_page |
Data |
@@ -1496,7 +1509,7 @@ Closed
- | 98 |
+ 99 |
instructions |
Text |
@@ -1508,7 +1521,7 @@ Closed
- | 99 |
+ 100 |
sales_team_section_break |
Section Break |
@@ -1522,7 +1535,7 @@ Closed
- | 100 |
+ 101 |
sales_partner |
Link |
@@ -1543,7 +1556,7 @@ Closed
- | 101 |
+ 102 |
column_break7 |
Column Break |
@@ -1555,7 +1568,7 @@ Closed
- | 102 |
+ 103 |
commission_rate |
Float |
@@ -1567,7 +1580,7 @@ Closed
- | 103 |
+ 104 |
total_commission |
Currency |
@@ -1581,7 +1594,7 @@ Closed
- | 104 |
+ 105 |
section_break1 |
Section Break |
@@ -1593,7 +1606,7 @@ Closed
- | 105 |
+ 106 |
sales_team |
Table |
diff --git a/erpnext/docs/current/models/stock/delivery_note_item.html b/erpnext/docs/current/models/stock/delivery_note_item.html
index c7abefed9d4..1c48c11e0e2 100644
--- a/erpnext/docs/current/models/stock/delivery_note_item.html
+++ b/erpnext/docs/current/models/stock/delivery_note_item.html
@@ -746,6 +746,20 @@
| 49 |
+ billed_amt |
+
+ Currency |
+
+ Billed Amt
+
+ |
+
+ currency
+ |
+
+
+
+ | 50 |
page_break |
Check |
diff --git a/erpnext/docs/current/models/stock/price_list.html b/erpnext/docs/current/models/stock/price_list.html
index 60d5b2eabec..28e2cec31eb 100644
--- a/erpnext/docs/current/models/stock/price_list.html
+++ b/erpnext/docs/current/models/stock/price_list.html
@@ -391,6 +391,8 @@ Price List Master
+
+
diff --git a/erpnext/docs/current/models/stock/purchase_receipt.html b/erpnext/docs/current/models/stock/purchase_receipt.html
index ee9ed2768d7..0a3cc11f245 100644
--- a/erpnext/docs/current/models/stock/purchase_receipt.html
+++ b/erpnext/docs/current/models/stock/purchase_receipt.html
@@ -1082,7 +1082,8 @@ Yes
Draft
-Submitted
+To Bill
+Completed
Cancelled
Closed
|
@@ -1157,6 +1158,18 @@ Closed
| 77 |
+ per_billed |
+
+ Percent |
+
+ % Amount Billed
+
+ |
+ |
+
+
+
+ | 78 |
company |
Link |
@@ -1177,7 +1190,7 @@ Closed
- | 78 |
+ 79 |
fiscal_year |
Link |
@@ -1198,7 +1211,7 @@ Closed
- | 79 |
+ 80 |
printing_settings |
Section Break |
@@ -1210,7 +1223,7 @@ Closed
- | 80 |
+ 81 |
letter_head |
Link |
@@ -1231,7 +1244,7 @@ Closed
- | 81 |
+ 82 |
select_print_heading |
Link |
@@ -1252,7 +1265,7 @@ Closed
- | 82 |
+ 83 |
other_details |
HTML |
@@ -1264,7 +1277,7 @@ Closed
- | 83 |
+ 84 |
instructions |
Small Text |
@@ -1276,7 +1289,7 @@ Closed
- | 84 |
+ 85 |
remarks |
Small Text |
@@ -1288,7 +1301,7 @@ Closed
- | 85 |
+ 86 |
transporter_info |
Section Break |
@@ -1302,7 +1315,7 @@ Closed
- | 86 |
+ 87 |
transporter_name |
Data |
@@ -1314,7 +1327,7 @@ Closed
- | 87 |
+ 88 |
column_break5 |
Column Break |
@@ -1326,7 +1339,7 @@ Closed
- | 88 |
+ 89 |
lr_no |
Data |
@@ -1338,7 +1351,7 @@ Closed
- | 89 |
+ 90 |
lr_date |
Date |
diff --git a/erpnext/docs/current/models/stock/purchase_receipt_item.html b/erpnext/docs/current/models/stock/purchase_receipt_item.html
index 025f291cdca..1ee6b14086c 100644
--- a/erpnext/docs/current/models/stock/purchase_receipt_item.html
+++ b/erpnext/docs/current/models/stock/purchase_receipt_item.html
@@ -794,6 +794,18 @@
| 53 |
+ billed_amt |
+
+ Currency |
+
+ Billed Amt
+
+ |
+ |
+
+
+
+ | 54 |
brand |
Link |
@@ -814,7 +826,7 @@
- | 54 |
+ 55 |
item_group |
Link |
@@ -835,7 +847,7 @@
- | 55 |
+ 56 |
rm_supp_cost |
Currency |
@@ -849,7 +861,7 @@
- | 56 |
+ 57 |
item_tax_amount |
Currency |
@@ -863,7 +875,7 @@
- | 57 |
+ 58 |
landed_cost_voucher_amount |
Currency |
@@ -875,7 +887,7 @@
- | 58 |
+ 59 |
valuation_rate |
Currency |
@@ -889,7 +901,7 @@
- | 59 |
+ 60 |
item_tax_rate |
Small Text |
@@ -903,7 +915,7 @@ Used for Taxes and Charges
- | 60 |
+ 61 |
page_break |
Check |
diff --git a/erpnext/docs/current/models/stock/warehouse.html b/erpnext/docs/current/models/stock/warehouse.html
index c0fa5d3d6b4..2d7108b2b05 100644
--- a/erpnext/docs/current/models/stock/warehouse.html
+++ b/erpnext/docs/current/models/stock/warehouse.html
@@ -629,6 +629,8 @@ A logical Warehouse against which stock entries are made.
+
+
diff --git a/erpnext/docs/user/manual/en/accounts/multi-currency-accounting.md b/erpnext/docs/user/manual/en/accounts/multi-currency-accounting.md
index a674f219e23..6080dcc71a9 100644
--- a/erpnext/docs/user/manual/en/accounts/multi-currency-accounting.md
+++ b/erpnext/docs/user/manual/en/accounts/multi-currency-accounting.md
@@ -10,14 +10,14 @@ You can also assign / modify the currency by opening specific Account record for
-For Customer / Supplier (Party), you can also define it's accounting currency in the Party record. If the Party's accounting currency is different from Company Currency, you have to mention Default Receivable / Payable Account in that currency.
+For Customer / Supplier (Party), you can also define it's billing currency in the Party record. If the Party's accounting currency is different from Company Currency, you should mention Default Receivable / Payable Account in that currency.
-Once you defined Accounting Currency in Party / Account record, you are ready to make transactions against them. If Party's accounting currency is different from Company Currency, system will restrict to make transaction for that party with that currency only. If accounting currency is same as Company Currency, you can make transactions for that Party in any currency. But accounting entries (GL Entries) will always be in Party's Accounting Currency. In any case, currency of Receivable Account will always be same as accounting currency of the Party.
+Once you defined Currency in the Account and selected relevant accounts in the Party record , you are ready to make transactions against them. If Party account currency is different from Company Currency, system will restrict to make transaction for that party with that currency only. If account currency is same as Company Currency, you can make transactions for that Party in any currency. But accounting entries (GL Entries) will always be in Party Account Currency.
-You can change accounting currency in Party / Account record, until making any transactions against them. After making accounting entries, system will not allow to change the accounting currency for both Party / Account record.
+You can change accounting currency in Party / Account record, until making any transactions against them. After making accounting entries, system will not allow to change the currency for both Party / Account record.
In case of multi-company setup, accounting currency of Party must be same for all the companies.
@@ -44,9 +44,7 @@ In Journal Entry, you can make transactions in different currencies. There is a
-In Accounts table, on selection of foreign currency account, system will show Currency section and fetch Account Currency and Exchange Rate automatically. You can change / modify the Exchange Rate later manually.
-
-In a single Journal Entry, you can select accounts with only one alternate currency, apart from accounts in Company Currency. Debit / Credit amount should be entered in Account Currency, system will calculate and show the Debit / Credit amount in Company Currency automatically.
+In Accounts table, on selection of foreign currency account, system will show Currency section and fetch Account Currency and Exchange Rate automatically. You can change / modify the Exchange Rate later manually. Debit / Credit amount should be entered in Account Currency, system will calculate and show the Debit / Credit amount in Company Currency automatically.
@@ -63,7 +61,8 @@ Exchange Rate in the payment entry should always be same as invoice (60), even i
Suppose, default currency of the company is INR. You have an Paypal account for which Currency is USD. You receive payments in the paypal account and lets say, paypal transfers amount once in a week to your other bank account which is managed in INR.
Paypal account gets debited on different date with different exchange rate, but on transfer date the exchange rate can be different. Hence, there is generally Exchange Loss / Gain on the transfer entry.
-In the bank transfer entry, system sets exchange rate based on the average incoming exchange rate Paypal account. You need to calculate and enter Exchange Loss / Gain based on the average exchange rate and the exchange rate on the transfer date.
+In the bank transfer entry, system sets exchange rate of the credit account (Paypal) based on the average incoming exchange rate. This is to maintain Paypal balance properly in company currency. In case you modify the average exchange rate, you need to adjust the exchange rate manually in the future entries, so that balance in account currency and company currency are in sync.
+Then you should calculate and enter Exchange Loss / Gain based on the Paypal exchange rate and the exchange rate on the transfer date.
Lets say, Paypal account debited by following amounts over the week, which has not been transferred to your other bank account.
diff --git a/erpnext/docs/user/manual/en/human-resources/index.txt b/erpnext/docs/user/manual/en/human-resources/index.txt
index caa32929516..33ee4bb3c2e 100644
--- a/erpnext/docs/user/manual/en/human-resources/index.txt
+++ b/erpnext/docs/user/manual/en/human-resources/index.txt
@@ -1,5 +1,5 @@
employee
-leave-application
+leave
expense-claim
attendance
salary-and-payroll
diff --git a/erpnext/docs/user/manual/en/human-resources/leave.md b/erpnext/docs/user/manual/en/human-resources/leave.md
new file mode 100644
index 00000000000..5b32a2b34d5
--- /dev/null
+++ b/erpnext/docs/user/manual/en/human-resources/leave.md
@@ -0,0 +1,92 @@
+#Overview
+This section enables you to manage leave schedule of your organization. It also explains the way employees can apply for leaves.
+Employees create leave request and manager (leave approver) approves or rejects the request. You can select from a number of leave types such as sick leave, casual leave, privilege leave and so on. You can also allocate leaves to your employees and generate reports to track leaves record.
+
+---
+
+#Leave Type
+
+> Human Resources > Setup > Leave Type > New Leave Type
+
+Leave Type refers to types of leave allotted to an employee by a company. An employee can select a particular Leave Type while requesting for a leave. You can create any number of Leave Types based on your company’s
+requirement.
+
+
+
+**Max Days Leave Allowed:** It refers to maximum number of days this particular Leave Type can be availed at a stretch. If an employee exceeds the maximum number of days under a particular Leave Type, his/her extended leave may be considered as ‘Leave Without Pay’ and this may affect his/her salary calculation.
+
+**Is Carry Forward:** If checked, the balance leave will be carried forwarded to the next allocation period.
+
+**Is Leave Without Pay:** This ensures that the Leave Type will be treated as leaves whithout pay and salary will get deducted for this Leave Type.
+
+**Allow Nagative Balance:** If checked, system will always allow to approve leave application for the Leave Type, even if there is no leave balance.
+
+**Include holidays within leaves as leaves:** Check this option if you wish to count holidays within leaves as a ‘leave’. Such holidays will be deducted from the total number of leaves.
+
+###Default Leave Types
+There are some pre-loaded Leave Types in the system, as below:
+
+- **Leave Without Pay:** You can avail these leaves for different purposes, such as, extended medical issues, educational purpose or unavoidable personal reason. Employee does not get paid for such leaves.
+- **Privilege leave:** These are like earned leaves which can be availed for the purpose of travel, family vacation and so on.
+- **Sick leave:** You can avail these leaves if you are unwell.
+- **Compensatory off:** These are compensatory leave allotted to employees for overtime work.
+- **Casual leave:** You can avail this leave to take care of urgent and unseen matters.
+
+---
+
+#Leave Allocation
+
+Leave Allocation enables you to allot a specific number of leaves to a particular employee. You can allocate a number of leaves to different types of leave. You also have the option to allocate leaves to your employees manually or via the Leave Allocation Tool.
+
+###Manual Allocation
+> Human Resources > Setup > Leave Allocation > New Leave Allocation
+
+To allocate leaves to an Employee, select the period and the number of leaves you want to allocate. You can also add unused leaves from previous allocation period.
+
+
+
+###Via Leave Allocation Tool
+> Human Resources > Tools > Leave Allocation Tool
+
+This tool enables you to allocate leaves for a category of employees, instead of individual ones. You can allocate leaves based on Employee Type, Branch, Department and Designation. Leave Allocation Tool is also known as Leave Control Panel.
+
+
+
+---
+
+#Leave Application
+> Human Resources > Documents > Leave Application > New Leave Application
+
+Leave Application section enables an employee to apply for leaves. Employee can select the type of leave and the Leave Approver who will authorize the Leave Application. User with "Leave Approver" role are considered as Leave approver. Leave Approvers can also be restricted/pre-defined in the Employee record. Based on selected dates and applicable Holiday List, total leave days is calculated automatically.
+
+**Basic Workflow:**
+
+- Employee applies for leave through Leave Application
+- Approver gets notification via email, "Follow via Email" should be checked for this.
+- Approver reviews Leave Application
+- Approver approves/rejects Leave Application
+- Employee gets notification on the status of his/her Leave Application
+
+
+
+
+**Notes:**
+
+- Leave Application period must be within a single Leave Allocation period. In case, you are applying for leave across leave allocation period, you have to create two Leave Application records.
+- Application period must be in the latest Allocation period.
+- Employee can't apply for leave on the dates which are added in the "Leave Block List".
+
+---
+
+#Leave Block List
+
+> Human Resources > Setup > Leave Block List > New Leave Block List
+
+Leave Block List is a list of dates in a year, on which employees can not apply for leave. You can define a list of users who can approve Leave Application on blocked days, in case of urgency. You can also define whether the list will applied on entire company or any specific departments.
+
+
\ No newline at end of file
diff --git a/erpnext/docs/user/manual/en/human-resources/setup/index.txt b/erpnext/docs/user/manual/en/human-resources/setup/index.txt
index 550236a2b37..b8681864b4e 100644
--- a/erpnext/docs/user/manual/en/human-resources/setup/index.txt
+++ b/erpnext/docs/user/manual/en/human-resources/setup/index.txt
@@ -5,6 +5,4 @@ department
designation
earning-type
deduction-type
-leave-allocation
-leave-type
holiday-list
diff --git a/erpnext/docs/user/manual/en/human-resources/setup/leave-allocation.md b/erpnext/docs/user/manual/en/human-resources/setup/leave-allocation.md
deleted file mode 100644
index 0e8ee945b30..00000000000
--- a/erpnext/docs/user/manual/en/human-resources/setup/leave-allocation.md
+++ /dev/null
@@ -1,7 +0,0 @@
-Helps you allocate Leaves to a particular Employee
-
-
-
-To assign leaves to multiple employees use the [Leave Allocation Tool]({{docs_base_url}}/user/manual/en/human-resources/tools/leave-allocation-tool.html)
-
-{next}
\ No newline at end of file
diff --git a/erpnext/docs/user/manual/en/human-resources/setup/leave-type.md b/erpnext/docs/user/manual/en/human-resources/setup/leave-type.md
deleted file mode 100644
index d52cb2e8a23..00000000000
--- a/erpnext/docs/user/manual/en/human-resources/setup/leave-type.md
+++ /dev/null
@@ -1,9 +0,0 @@
-Specify the Type of Leave that can be allocated against an Employee
-
-
-
-* 'Max Days Leave Allowed' specifies the maximum number of days this type of leave can be taken at a strech.
-* 'Is LWP' specifies if the Leave is without Pay.
-* 'Allow Negative Balance' specifies if system can maintain negative leaves.
-
-{next}
\ No newline at end of file
diff --git a/erpnext/docs/user/manual/en/human-resources/tools/index.txt b/erpnext/docs/user/manual/en/human-resources/tools/index.txt
index 3da2e7166a5..0d74de7e120 100644
--- a/erpnext/docs/user/manual/en/human-resources/tools/index.txt
+++ b/erpnext/docs/user/manual/en/human-resources/tools/index.txt
@@ -1,2 +1 @@
-upload-attendance
-leave-allocation-tool
\ No newline at end of file
+upload-attendance
\ No newline at end of file
diff --git a/erpnext/docs/user/manual/en/human-resources/tools/leave-allocation-tool.md b/erpnext/docs/user/manual/en/human-resources/tools/leave-allocation-tool.md
deleted file mode 100644
index 56e8d3dee09..00000000000
--- a/erpnext/docs/user/manual/en/human-resources/tools/leave-allocation-tool.md
+++ /dev/null
@@ -1,5 +0,0 @@
-Leave Allocation tool helps you allocated a specific number of leaves for your employees.
-
-
-
-{next}
\ No newline at end of file
diff --git a/erpnext/hooks.py b/erpnext/hooks.py
index 79a38cbb892..a9dc52b2648 100644
--- a/erpnext/hooks.py
+++ b/erpnext/hooks.py
@@ -7,7 +7,7 @@ app_publisher = "Frappe Technologies Pvt. Ltd."
app_description = """ERP made simple"""
app_icon = "icon-th"
app_color = "#e74c3c"
-app_version = "6.15.1"
+app_version = "6.16.0"
app_email = "info@erpnext.com"
app_license = "GNU General Public License (v3)"
source_link = "https://github.com/frappe/erpnext"
diff --git a/erpnext/manufacturing/doctype/bom/bom.py b/erpnext/manufacturing/doctype/bom/bom.py
index 4b7f7f2bf7f..7c47cb8affc 100644
--- a/erpnext/manufacturing/doctype/bom/bom.py
+++ b/erpnext/manufacturing/doctype/bom/bom.py
@@ -198,6 +198,9 @@ class BOM(Document):
self.uom = ret[1]
self.item_name= ret[2]
+ if not self.quantity:
+ frappe.throw(_("Quantity should be greater than 0"))
+
def validate_materials(self):
""" Validate raw material entries """
if not self.get('items'):
diff --git a/erpnext/stock/doctype/purchase_receipt/purchase_receipt.py b/erpnext/stock/doctype/purchase_receipt/purchase_receipt.py
index b20617e95ff..b0f9eaa900c 100644
--- a/erpnext/stock/doctype/purchase_receipt/purchase_receipt.py
+++ b/erpnext/stock/doctype/purchase_receipt/purchase_receipt.py
@@ -52,8 +52,8 @@ class PurchaseReceipt(BuyingController):
if billed_qty:
total_qty = sum((item.qty for item in self.get("items")))
self.set_onload("billing_complete", (billed_qty[0][0] == total_qty))
-
- self.set_onload("has_return_entry", len(frappe.db.exists({"doctype": "Purchase Receipt",
+
+ self.set_onload("has_return_entry", len(frappe.db.exists({"doctype": "Purchase Receipt",
"is_return": 1, "return_against": self.name, "docstatus": 1})))
def validate(self):
@@ -99,7 +99,7 @@ class PurchaseReceipt(BuyingController):
if flt(d.rejected_qty) and not d.rejected_warehouse:
d.rejected_warehouse = self.rejected_warehouse
if not d.rejected_warehouse:
- frappe.throw(_("Rejected Warehouse is mandatory against regected item"))
+ frappe.throw(_("Row #{0}: Rejected Warehouse is mandatory against rejected Item {1}").format(d.idx, d.item_code))
# validate accepted and rejected qty
def validate_accepted_rejected_qty(self):
diff --git a/erpnext/templates/generators/item.html b/erpnext/templates/generators/item.html
index 500a11853eb..8a2dcf2af38 100644
--- a/erpnext/templates/generators/item.html
+++ b/erpnext/templates/generators/item.html
@@ -1,3 +1,5 @@
+{% extends "templates/web.html" %}
+
{% block title %} {{ title }} {% endblock %}
{% block header %}{{ title }}
{% endblock %}
@@ -6,7 +8,7 @@
{% include 'templates/includes/product_search_box.html' %}
{% endblock %}
-{% block content %}
+{% block page_content %}
{% from "erpnext/templates/includes/macros.html" import product_image %}
diff --git a/erpnext/templates/generators/item_group.html b/erpnext/templates/generators/item_group.html
index 2652f6f74dc..2cfb9346604 100644
--- a/erpnext/templates/generators/item_group.html
+++ b/erpnext/templates/generators/item_group.html
@@ -1,8 +1,10 @@
+{% extends "templates/web.html" %}
+
{% block header_actions %}
{% include 'templates/includes/product_search_box.html' %}
{% endblock %}
-{% block content %}
+{% block page_content %}
{% if slideshow %}
@@ -27,17 +29,6 @@
{% endif %}
-
-
{% endblock %}
{% block style %}
diff --git a/erpnext/templates/generators/sales_partner.html b/erpnext/templates/generators/sales_partner.html
index 2a07448fff0..6da6ad0fe22 100644
--- a/erpnext/templates/generators/sales_partner.html
+++ b/erpnext/templates/generators/sales_partner.html
@@ -1,8 +1,10 @@
+{% extends "templates/web.html" %}
+
{% block title %} {{ title }} {% endblock %}
{% block header %}
{{ title }}
{% endblock %}
-{% block content %}
+{% block page_content %}