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)

No docs

@@ -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 + () +

+

No docs

+
+
+ + + + + + +

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) +

+

No docs

+
+
+ + + + + + +

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) +

    +

    No docs

    +
    +
    + + + + +

    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 Modify Account Currency -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. Customer Accounting 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 Journal Entry Exchange Rate -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. Journal Entry in multi currency @@ -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. + +New Leave Type + +**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. + +Manual Leave Allocation + +###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 Allocation Tool + +--- + +#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 + +Leave Allocation Tool + + +**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. + +Leave Allocation Tool \ 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 - -Leave Allocation - -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 - -Leave Type - -* '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. - -Leave Application - -{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 %}
    diff --git a/erpnext/templates/includes/address_row.html b/erpnext/templates/includes/address_row.html index f6ec819bd55..15dcb951967 100644 --- a/erpnext/templates/includes/address_row.html +++ b/erpnext/templates/includes/address_row.html @@ -1,5 +1,5 @@
    {% endif %} diff --git a/erpnext/templates/includes/issue_row.html b/erpnext/templates/includes/issue_row.html index 2935a24ea4c..c090f93ebec 100644 --- a/erpnext/templates/includes/issue_row.html +++ b/erpnext/templates/includes/issue_row.html @@ -1,5 +1,5 @@
    - +
    diff --git a/erpnext/templates/includes/product_page.js b/erpnext/templates/includes/product_page.js index cec4f2a6a65..0a38c23f9b4 100644 --- a/erpnext/templates/includes/product_page.js +++ b/erpnext/templates/includes/product_page.js @@ -86,7 +86,7 @@ frappe.ready(function() { return; } - frappe.load_via_ajax(window.location.pathname + "?variant=" + item_code); + window.location.href = window.location.pathname + "?variant=" + item_code; }); }); diff --git a/erpnext/templates/includes/transaction_row.html b/erpnext/templates/includes/transaction_row.html index 9b9fd52350e..7c03579748c 100644 --- a/erpnext/templates/includes/transaction_row.html +++ b/erpnext/templates/includes/transaction_row.html @@ -1,5 +1,5 @@
    - +
    diff --git a/erpnext/templates/pages/cart.html b/erpnext/templates/pages/cart.html index a97e65876c8..6891bceb1bd 100644 --- a/erpnext/templates/pages/cart.html +++ b/erpnext/templates/pages/cart.html @@ -1,9 +1,18 @@ +{% extends "templates/web.html" %} + {% block title %} {{ "Shopping Cart" }} {% endblock %} {% block header %}

    {{ _("My Cart") }}

    {% endblock %} -{% block script %}{% include "templates/includes/cart.js" %}{% endblock %} -{% block style %}{% include "templates/includes/cart.css" %}{% endblock %} +{% block script %} + +{% endblock %} + +{% block style %} + +{% endblock %} {% block header_actions %} @@ -14,7 +23,7 @@ {% endif %} {% endblock %} -{% block content %} +{% block page_content %} {% from "templates/includes/macros.html" import item_name_and_description %} diff --git a/erpnext/templates/pages/edit-profile.html b/erpnext/templates/pages/edit-profile.html index 82ad6fa0765..f10e0a3526a 100644 --- a/erpnext/templates/pages/edit-profile.html +++ b/erpnext/templates/pages/edit-profile.html @@ -1,8 +1,10 @@ +{% extends "templates/web.html" %} + {% block title %} {{ "My Profile" }} {% endblock %} {% block header %}

    My Profile

    {% endblock %} -{% block content %} +{% block page_content %}
    @@ -26,7 +28,7 @@