diff --git a/README.md b/README.md index 74ea7fc8a5d..d719873c764 100644 --- a/README.md +++ b/README.md @@ -8,7 +8,7 @@ Includes: Accounting, Inventory, Manufacturing, CRM, Sales, Purchase, Project Ma ERPNext is built on the [Frappé](https://github.com/frappe/frappe) Framework, a full-stack web app framework in Python & JavaScript. -- [User Guide](https://erpnext.org/docs/user) +- [User Guide](https://erpnext.com/docs/user) - [Discussion Forum](https://discuss.erpnext.com/) --- diff --git a/erpnext/__init__.py b/erpnext/__init__.py index 847618232c7..c1090e9e0a7 100644 --- a/erpnext/__init__.py +++ b/erpnext/__init__.py @@ -5,7 +5,7 @@ import frappe from erpnext.hooks import regional_overrides from frappe.utils import getdate -__version__ = '10.1.80' +__version__ = '10.1.81' def get_default_company(user=None): '''Get default company for user''' diff --git a/erpnext/accounts/doctype/journal_entry/journal_entry.js b/erpnext/accounts/doctype/journal_entry/journal_entry.js index 60c974f2623..0aa62d510c1 100644 --- a/erpnext/accounts/doctype/journal_entry/journal_entry.js +++ b/erpnext/accounts/doctype/journal_entry/journal_entry.js @@ -145,6 +145,13 @@ erpnext.accounts.JournalEntry = frappe.ui.form.Controller.extend({ }; } + // payroll entry + if(jvd.reference_type==="Payroll Entry") { + return { + query: "erpnext.hr.doctype.payroll_entry.payroll_entry.get_payroll_entries_for_jv", + }; + } + var out = { filters: [ [jvd.reference_type, "docstatus", "=", 1] @@ -167,10 +174,18 @@ erpnext.accounts.JournalEntry = frappe.ui.form.Controller.extend({ out.filters.push([jvd.reference_type, "per_billed", "<", 100]); } - + if(jvd.party_type && jvd.party) { - out.filters.push([jvd.reference_type, - (jvd.reference_type.indexOf("Sales")===0 ? "customer" : "supplier"), "=", jvd.party]); + var party_field = ""; + if(jvd.reference_type.indexOf("Sales")===0) { + var party_field = "customer"; + } else if (jvd.reference_type.indexOf("Purchase")===0) { + var party_field = "supplier"; + } + + if (party_field) { + out.filters.push([jvd.reference_type, party_field, "=", jvd.party]); + } } return out; diff --git a/erpnext/assets/doctype/asset/test_asset.py b/erpnext/assets/doctype/asset/test_asset.py index 76c46cff7ac..de164762ff6 100644 --- a/erpnext/assets/doctype/asset/test_asset.py +++ b/erpnext/assets/doctype/asset/test_asset.py @@ -49,7 +49,17 @@ class TestAsset(unittest.TestCase): self.assertFalse(frappe.db.get_value("GL Entry", {"voucher_type": "Purchase Invoice", "voucher_no": pi.name})) - + + def test_is_fixed_asset_set(self): + doc = frappe.new_doc('Purchase Invoice') + doc.supplier = '_Test Supplier' + doc.append('items', { + 'item_code': 'Macbook Pro', + 'qty': 1 + }) + + doc.set_missing_values() + self.assertEquals(doc.items[0].is_fixed_asset, 1) def test_schedule_for_straight_line_method(self): asset = frappe.get_doc("Asset", "Macbook Pro 1") diff --git a/erpnext/buying/doctype/supplier_scorecard/supplier_scorecard.js b/erpnext/buying/doctype/supplier_scorecard/supplier_scorecard.js index e7a704a28af..5f5f54b79f5 100644 --- a/erpnext/buying/doctype/supplier_scorecard/supplier_scorecard.js +++ b/erpnext/buying/doctype/supplier_scorecard/supplier_scorecard.js @@ -13,15 +13,23 @@ frappe.ui.form.on("Supplier Scorecard", { }, onload: function(frm) { if (frm.doc.__unsaved == 1) { - loadAllCriteria(frm); loadAllStandings(frm); } - }, - refresh: function(frm) { - if (frm.dashboard.hasOwnProperty('heatmap')) { - frm.dashboard.heatmap.setLegend([0,20,40,60,80,101],["#991600","#169900"]); - } + load_criteria: function(frm) { + frappe.call({ + method: "erpnext.buying.doctype.supplier_scorecard_criteria.supplier_scorecard_criteria.get_criteria_list", + callback: function(r) { + frm.set_value('criteria', []); + for (var i = 0; i < r.message.length; i++) + { + var row = frm.add_child("criteria"); + row.criteria_name = r.message[i].name; + frm.script_manager.trigger("criteria_name", row.doctype, row.name); + } + refresh_field("criteria"); + } + }); } }); @@ -29,8 +37,8 @@ frappe.ui.form.on("Supplier Scorecard", { frappe.ui.form.on("Supplier Scorecard Scoring Standing", { standing_name: function(frm, cdt, cdn) { - if (frm.doc.standing_name != undefined) { - var d = frappe.get_doc(cdt, cdn); + var d = frappe.get_doc(cdt, cdn); + if (d.standing_name) { return frm.call({ method: "erpnext.buying.doctype.supplier_scorecard_standing.supplier_scorecard_standing.get_scoring_standing", child: d, @@ -42,86 +50,29 @@ frappe.ui.form.on("Supplier Scorecard Scoring Standing", { } }); -frappe.ui.form.on("Supplier Scorecard Scoring Variable", { - - variable_label: function(frm, cdt, cdn) { - if (frm.doc.variable_label != undefined) { - var d = frappe.get_doc(cdt, cdn); - return frm.call({ - method: "erpnext.buying.doctype.supplier_scorecard_variable.supplier_scorecard_variable.get_scoring_variable", - child: d, - args: { - variable_label: d.variable_label - } - }); - } - } -}); - frappe.ui.form.on("Supplier Scorecard Scoring Criteria", { criteria_name: function(frm, cdt, cdn) { - if (frm.doc.criteria_name != undefined) { - var d = frappe.get_doc(cdt, cdn); - frm.call({ - method: "erpnext.buying.doctype.supplier_scorecard_criteria.supplier_scorecard_criteria.get_variables", + var d = frappe.get_doc(cdt, cdn); + if (d.criteria_name) { + return frm.call({ + method: "frappe.client.get", args: { - criteria_name: d.criteria_name + fieldname: "weight", + doctype: "Supplier Scorecard Criteria", + filters: {name: d.criteria_name} }, callback: function(r) { - for (var i = 0; i < r.message.length; i++) - { - var exists = false; - for (var j = 0; j < frm.doc.variables.length; j++) - { - if(!frm.doc.variables[j].hasOwnProperty("variable_label")) { - frm.get_field("variables").grid.grid_rows[j].remove(); - } - else if(frm.doc.variables[j].variable_label === r.message[i]) { - exists = true; - } - } - if (!exists){ - var new_row = frm.add_child("variables"); - new_row.variable_label = r.message[i]; - frm.script_manager.trigger("variable_label", new_row.doctype, new_row.name); - } - + if(r.message){ + d.weight = r.message.weight; + frm.refresh_field('criteria', 'weight'); } - refresh_field("variables"); - } - }); - return frm.call({ - method: "erpnext.buying.doctype.supplier_scorecard_criteria.supplier_scorecard_criteria.get_scoring_criteria", - child: d, - args: { - criteria_name: d.criteria_name } }); } } }); -var loadAllCriteria = function(frm) { - frappe.call({ - method: "erpnext.buying.doctype.supplier_scorecard_criteria.supplier_scorecard_criteria.get_criteria_list", - callback: function(r) { - for (var j = 0; j < frm.doc.criteria.length; j++) - { - if(!frm.doc.criteria[j].hasOwnProperty("criteria_name")) { - frm.get_field("criteria").grid.grid_rows[j].remove(); - } - } - for (var i = 0; i < r.message.length; i++) - { - var new_row = frm.add_child("criteria"); - new_row.criteria_name = r.message[i].name; - frm.script_manager.trigger("criteria_name", new_row.doctype, new_row.name); - } - refresh_field("criteria"); - } - }); -}; var loadAllStandings = function(frm) { frappe.call({ method: "erpnext.buying.doctype.supplier_scorecard_standing.supplier_scorecard_standing.get_standings_list", diff --git a/erpnext/buying/doctype/supplier_scorecard/supplier_scorecard.json b/erpnext/buying/doctype/supplier_scorecard/supplier_scorecard.json index d7f24c90821..6a077e9c354 100644 --- a/erpnext/buying/doctype/supplier_scorecard/supplier_scorecard.json +++ b/erpnext/buying/doctype/supplier_scorecard/supplier_scorecard.json @@ -1,701 +1,700 @@ { - "allow_copy": 0, - "allow_guest_to_view": 0, - "allow_import": 0, - "allow_rename": 0, - "autoname": "field:supplier", - "beta": 1, - "creation": "2017-05-29 01:40:54.786555", - "custom": 0, - "docstatus": 0, - "doctype": "DocType", - "document_type": "", - "editable_grid": 1, - "engine": "InnoDB", + "allow_copy": 0, + "allow_guest_to_view": 0, + "allow_import": 0, + "allow_rename": 0, + "autoname": "field:supplier", + "beta": 0, + "creation": "2017-05-29 01:40:54.786555", + "custom": 0, + "docstatus": 0, + "doctype": "DocType", + "document_type": "", + "editable_grid": 1, + "engine": "InnoDB", "fields": [ { - "allow_bulk_edit": 0, - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "columns": 0, - "fieldname": "supplier", - "fieldtype": "Link", - "hidden": 0, - "ignore_user_permissions": 0, - "ignore_xss_filter": 0, - "in_filter": 0, - "in_global_search": 0, - "in_list_view": 0, - "in_standard_filter": 0, - "label": "Supplier", - "length": 0, - "no_copy": 0, - "options": "Supplier", - "permlevel": 0, - "precision": "", - "print_hide": 0, - "print_hide_if_no_value": 0, - "read_only": 0, - "remember_last_selected_value": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_bulk_edit": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "columns": 0, + "fieldname": "supplier", + "fieldtype": "Link", + "hidden": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_filter": 0, + "in_global_search": 0, + "in_list_view": 0, + "in_standard_filter": 0, + "label": "Supplier", + "length": 0, + "no_copy": 0, + "options": "Supplier", + "permlevel": 0, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "read_only": 0, + "remember_last_selected_value": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_bulk_edit": 0, - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "columns": 0, - "fieldname": "supplier_score", - "fieldtype": "Data", - "hidden": 0, - "ignore_user_permissions": 0, - "ignore_xss_filter": 0, - "in_filter": 0, - "in_global_search": 0, - "in_list_view": 0, - "in_standard_filter": 0, - "label": "Supplier Score", - "length": 0, - "no_copy": 0, - "permlevel": 0, - "precision": "", - "print_hide": 0, - "print_hide_if_no_value": 0, - "read_only": 1, - "remember_last_selected_value": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_bulk_edit": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "columns": 0, + "fieldname": "supplier_score", + "fieldtype": "Data", + "hidden": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_filter": 0, + "in_global_search": 0, + "in_list_view": 0, + "in_standard_filter": 0, + "label": "Supplier Score", + "length": 0, + "no_copy": 0, + "permlevel": 0, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "read_only": 1, + "remember_last_selected_value": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_bulk_edit": 0, - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "columns": 0, - "fieldname": "indicator_color", - "fieldtype": "Data", - "hidden": 1, - "ignore_user_permissions": 0, - "ignore_xss_filter": 0, - "in_filter": 0, - "in_global_search": 0, - "in_list_view": 0, - "in_standard_filter": 0, - "label": "Indicator Color", - "length": 0, - "no_copy": 0, - "permlevel": 0, - "precision": "", - "print_hide": 0, - "print_hide_if_no_value": 0, - "read_only": 0, - "remember_last_selected_value": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_bulk_edit": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "columns": 0, + "fieldname": "indicator_color", + "fieldtype": "Data", + "hidden": 1, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_filter": 0, + "in_global_search": 0, + "in_list_view": 0, + "in_standard_filter": 0, + "label": "Indicator Color", + "length": 0, + "no_copy": 0, + "permlevel": 0, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "read_only": 0, + "remember_last_selected_value": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_bulk_edit": 0, - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "columns": 0, - "fieldname": "status", - "fieldtype": "Data", - "hidden": 1, - "ignore_user_permissions": 0, - "ignore_xss_filter": 0, - "in_filter": 0, - "in_global_search": 0, - "in_list_view": 0, - "in_standard_filter": 0, - "label": "Status", - "length": 0, - "no_copy": 0, - "permlevel": 0, - "precision": "", - "print_hide": 0, - "print_hide_if_no_value": 0, - "read_only": 0, - "remember_last_selected_value": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_bulk_edit": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "columns": 0, + "fieldname": "status", + "fieldtype": "Data", + "hidden": 1, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_filter": 0, + "in_global_search": 0, + "in_list_view": 0, + "in_standard_filter": 0, + "label": "Status", + "length": 0, + "no_copy": 0, + "permlevel": 0, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "read_only": 0, + "remember_last_selected_value": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_bulk_edit": 0, - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "columns": 0, - "fieldname": "column_break_2", - "fieldtype": "Column Break", - "hidden": 0, - "ignore_user_permissions": 0, - "ignore_xss_filter": 0, - "in_filter": 0, - "in_global_search": 0, - "in_list_view": 0, - "in_standard_filter": 0, - "length": 0, - "no_copy": 0, - "permlevel": 0, - "precision": "", - "print_hide": 0, - "print_hide_if_no_value": 0, - "read_only": 0, - "remember_last_selected_value": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_bulk_edit": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "columns": 0, + "fieldname": "column_break_2", + "fieldtype": "Column Break", + "hidden": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_filter": 0, + "in_global_search": 0, + "in_list_view": 0, + "in_standard_filter": 0, + "length": 0, + "no_copy": 0, + "permlevel": 0, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "read_only": 0, + "remember_last_selected_value": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_bulk_edit": 0, - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "columns": 0, - "default": "Per Month", - "fieldname": "period", - "fieldtype": "Select", - "hidden": 0, - "ignore_user_permissions": 0, - "ignore_xss_filter": 0, - "in_filter": 0, - "in_global_search": 0, - "in_list_view": 1, - "in_standard_filter": 0, - "label": "Evaluation Period", - "length": 0, - "no_copy": 0, - "options": "Per Month\nPer Week\nPer Year", - "permlevel": 0, - "precision": "", - "print_hide": 0, - "print_hide_if_no_value": 0, - "read_only": 0, - "remember_last_selected_value": 0, - "report_hide": 0, - "reqd": 1, - "search_index": 0, - "set_only_once": 0, + "allow_bulk_edit": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "columns": 0, + "default": "Per Month", + "fieldname": "period", + "fieldtype": "Select", + "hidden": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_filter": 0, + "in_global_search": 0, + "in_list_view": 1, + "in_standard_filter": 0, + "label": "Evaluation Period", + "length": 0, + "no_copy": 0, + "options": "Per Week\nPer Month\nPer Year", + "permlevel": 0, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "read_only": 0, + "remember_last_selected_value": 0, + "report_hide": 0, + "reqd": 1, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_bulk_edit": 0, - "allow_on_submit": 0, - "bold": 0, - "collapsible": 1, - "columns": 0, - "fieldname": "scoring_setup", - "fieldtype": "Section Break", - "hidden": 0, - "ignore_user_permissions": 0, - "ignore_xss_filter": 0, - "in_filter": 0, - "in_global_search": 0, - "in_list_view": 0, - "in_standard_filter": 0, - "label": "Scoring Setup", - "length": 0, - "no_copy": 0, - "permlevel": 0, - "precision": "", - "print_hide": 0, - "print_hide_if_no_value": 0, - "read_only": 0, - "remember_last_selected_value": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_bulk_edit": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 1, + "columns": 0, + "fieldname": "scoring_setup", + "fieldtype": "Section Break", + "hidden": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_filter": 0, + "in_global_search": 0, + "in_list_view": 0, + "in_standard_filter": 0, + "label": "Scoring Setup", + "length": 0, + "no_copy": 0, + "permlevel": 0, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "read_only": 0, + "remember_last_selected_value": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_bulk_edit": 0, - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "columns": 0, - "default": "{total_score} * max( 0, min ( 1 , (12 - {period_number}) / 12) )", - "description": "Scorecard variables can be used, as well as:\n{total_score} (the total score from that period),\n{period_number} (the number of periods to present day)\n", - "fieldname": "weighting_function", - "fieldtype": "Small Text", - "hidden": 0, - "ignore_user_permissions": 0, - "ignore_xss_filter": 0, - "in_filter": 0, - "in_global_search": 0, - "in_list_view": 0, - "in_standard_filter": 0, - "label": "Weighting Function", - "length": 0, - "no_copy": 0, - "permlevel": 0, - "precision": "", - "print_hide": 0, - "print_hide_if_no_value": 0, - "read_only": 0, - "remember_last_selected_value": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_bulk_edit": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "columns": 0, + "default": "{total_score} * max( 0, min ( 1 , (12 - {period_number}) / 12) )", + "description": "Scorecard variables can be used, as well as:\n{total_score} (the total score from that period),\n{period_number} (the number of periods to present day)\n", + "fieldname": "weighting_function", + "fieldtype": "Small Text", + "hidden": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 1, + "in_filter": 0, + "in_global_search": 0, + "in_list_view": 0, + "in_standard_filter": 0, + "label": "Weighting Function", + "length": 0, + "no_copy": 0, + "permlevel": 0, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "read_only": 0, + "remember_last_selected_value": 0, + "report_hide": 0, + "reqd": 1, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_bulk_edit": 0, - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "columns": 0, - "fieldname": "standings", - "fieldtype": "Table", - "hidden": 0, - "ignore_user_permissions": 0, - "ignore_xss_filter": 0, - "in_filter": 0, - "in_global_search": 0, - "in_list_view": 0, - "in_standard_filter": 0, - "label": "Scoring Standings", - "length": 0, - "no_copy": 0, - "options": "Supplier Scorecard Scoring Standing", - "permlevel": 0, - "precision": "", - "print_hide": 0, - "print_hide_if_no_value": 0, - "read_only": 0, - "remember_last_selected_value": 0, - "report_hide": 0, - "reqd": 1, - "search_index": 0, - "set_only_once": 0, + "allow_bulk_edit": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "columns": 0, + "fieldname": "standings", + "fieldtype": "Table", + "hidden": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_filter": 0, + "in_global_search": 0, + "in_list_view": 0, + "in_standard_filter": 0, + "label": "Scoring Standings", + "length": 0, + "no_copy": 0, + "options": "Supplier Scorecard Scoring Standing", + "permlevel": 0, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "read_only": 0, + "remember_last_selected_value": 0, + "report_hide": 0, + "reqd": 1, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_bulk_edit": 0, - "allow_on_submit": 0, - "bold": 0, - "collapsible": 1, - "columns": 0, - "fieldname": "criteria_setup", - "fieldtype": "Section Break", - "hidden": 0, - "ignore_user_permissions": 0, - "ignore_xss_filter": 0, - "in_filter": 0, - "in_global_search": 0, - "in_list_view": 0, - "in_standard_filter": 0, - "label": "Criteria Setup", - "length": 0, - "no_copy": 0, - "permlevel": 0, - "precision": "", - "print_hide": 0, - "print_hide_if_no_value": 0, - "read_only": 0, - "remember_last_selected_value": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_bulk_edit": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 1, + "columns": 0, + "fieldname": "criteria_setup", + "fieldtype": "Section Break", + "hidden": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_filter": 0, + "in_global_search": 0, + "in_list_view": 0, + "in_standard_filter": 0, + "label": "Criteria Setup", + "length": 0, + "no_copy": 0, + "permlevel": 0, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "read_only": 0, + "remember_last_selected_value": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_bulk_edit": 0, - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "columns": 0, - "fieldname": "criteria", - "fieldtype": "Table", - "hidden": 0, - "ignore_user_permissions": 0, - "ignore_xss_filter": 0, - "in_filter": 0, - "in_global_search": 0, - "in_list_view": 0, - "in_standard_filter": 0, - "label": "Scoring Criteria", - "length": 0, - "no_copy": 0, - "options": "Supplier Scorecard Scoring Criteria", - "permlevel": 0, - "precision": "", - "print_hide": 0, - "print_hide_if_no_value": 0, - "read_only": 0, - "remember_last_selected_value": 0, - "report_hide": 0, - "reqd": 1, - "search_index": 0, - "set_only_once": 0, + "allow_bulk_edit": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "columns": 0, + "fieldname": "load_criteria", + "fieldtype": "Button", + "hidden": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_filter": 0, + "in_global_search": 0, + "in_list_view": 0, + "in_standard_filter": 0, + "label": "Load All Criteria", + "length": 0, + "no_copy": 0, + "permlevel": 0, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "read_only": 0, + "remember_last_selected_value": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_bulk_edit": 0, - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "columns": 0, - "fieldname": "variables", - "fieldtype": "Table", - "hidden": 0, - "ignore_user_permissions": 0, - "ignore_xss_filter": 0, - "in_filter": 0, - "in_global_search": 0, - "in_list_view": 0, - "in_standard_filter": 0, - "label": "Supplier Variables", - "length": 0, - "no_copy": 0, - "options": "Supplier Scorecard Scoring Variable", - "permlevel": 0, - "precision": "", - "print_hide": 0, - "print_hide_if_no_value": 0, - "read_only": 0, - "remember_last_selected_value": 0, - "report_hide": 0, - "reqd": 1, - "search_index": 0, - "set_only_once": 0, + "allow_bulk_edit": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "columns": 0, + "fieldname": "criteria", + "fieldtype": "Table", + "hidden": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_filter": 0, + "in_global_search": 0, + "in_list_view": 0, + "in_standard_filter": 0, + "label": "Scoring Criteria", + "length": 0, + "no_copy": 0, + "options": "Supplier Scorecard Scoring Criteria", + "permlevel": 0, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "read_only": 0, + "remember_last_selected_value": 0, + "report_hide": 0, + "reqd": 1, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_bulk_edit": 0, - "allow_on_submit": 0, - "bold": 0, - "collapsible": 1, - "collapsible_depends_on": "eval: doc.status != 'Unknown'", - "columns": 0, - "fieldname": "scorecard_actions", - "fieldtype": "Section Break", - "hidden": 0, - "ignore_user_permissions": 0, - "ignore_xss_filter": 0, - "in_filter": 0, - "in_global_search": 0, - "in_list_view": 0, - "in_standard_filter": 0, - "label": "Scorecard Actions", - "length": 0, - "no_copy": 0, - "permlevel": 0, - "precision": "", - "print_hide": 0, - "print_hide_if_no_value": 0, - "read_only": 0, - "remember_last_selected_value": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_bulk_edit": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 1, + "collapsible_depends_on": "eval: doc.status != 'Unknown'", + "columns": 0, + "fieldname": "scorecard_actions", + "fieldtype": "Section Break", + "hidden": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_filter": 0, + "in_global_search": 0, + "in_list_view": 0, + "in_standard_filter": 0, + "label": "Scorecard Actions", + "length": 0, + "no_copy": 0, + "permlevel": 0, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "read_only": 0, + "remember_last_selected_value": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_bulk_edit": 0, - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "columns": 0, - "fieldname": "warn_rfqs", - "fieldtype": "Check", - "hidden": 0, - "ignore_user_permissions": 0, - "ignore_xss_filter": 0, - "in_filter": 0, - "in_global_search": 0, - "in_list_view": 0, - "in_standard_filter": 0, - "label": "Warn for new Request for Quotations", - "length": 0, - "no_copy": 0, - "permlevel": 0, - "precision": "", - "print_hide": 0, - "print_hide_if_no_value": 0, - "read_only": 1, - "remember_last_selected_value": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_bulk_edit": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "columns": 0, + "fieldname": "warn_rfqs", + "fieldtype": "Check", + "hidden": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_filter": 0, + "in_global_search": 0, + "in_list_view": 0, + "in_standard_filter": 0, + "label": "Warn for new Request for Quotations", + "length": 0, + "no_copy": 0, + "permlevel": 0, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "read_only": 1, + "remember_last_selected_value": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_bulk_edit": 0, - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "columns": 0, - "fieldname": "warn_pos", - "fieldtype": "Check", - "hidden": 0, - "ignore_user_permissions": 0, - "ignore_xss_filter": 0, - "in_filter": 0, - "in_global_search": 0, - "in_list_view": 0, - "in_standard_filter": 0, - "label": "Warn for new Purchase Orders", - "length": 0, - "no_copy": 0, - "permlevel": 0, - "precision": "", - "print_hide": 0, - "print_hide_if_no_value": 0, - "read_only": 1, - "remember_last_selected_value": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_bulk_edit": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "columns": 0, + "fieldname": "warn_pos", + "fieldtype": "Check", + "hidden": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_filter": 0, + "in_global_search": 0, + "in_list_view": 0, + "in_standard_filter": 0, + "label": "Warn for new Purchase Orders", + "length": 0, + "no_copy": 0, + "permlevel": 0, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "read_only": 1, + "remember_last_selected_value": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_bulk_edit": 0, - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "columns": 0, - "fieldname": "prevent_rfqs", - "fieldtype": "Check", - "hidden": 0, - "ignore_user_permissions": 0, - "ignore_xss_filter": 0, - "in_filter": 0, - "in_global_search": 0, - "in_list_view": 0, - "in_standard_filter": 0, - "label": "Prevent RFQs", - "length": 0, - "no_copy": 0, - "permlevel": 0, - "precision": "", - "print_hide": 0, - "print_hide_if_no_value": 0, - "read_only": 1, - "remember_last_selected_value": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_bulk_edit": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "columns": 0, + "fieldname": "prevent_rfqs", + "fieldtype": "Check", + "hidden": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_filter": 0, + "in_global_search": 0, + "in_list_view": 0, + "in_standard_filter": 0, + "label": "Prevent RFQs", + "length": 0, + "no_copy": 0, + "permlevel": 0, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "read_only": 1, + "remember_last_selected_value": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_bulk_edit": 0, - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "columns": 0, - "fieldname": "prevent_pos", - "fieldtype": "Check", - "hidden": 0, - "ignore_user_permissions": 0, - "ignore_xss_filter": 0, - "in_filter": 0, - "in_global_search": 0, - "in_list_view": 0, - "in_standard_filter": 0, - "label": "Prevent POs", - "length": 0, - "no_copy": 0, - "permlevel": 0, - "precision": "", - "print_hide": 0, - "print_hide_if_no_value": 0, - "read_only": 1, - "remember_last_selected_value": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_bulk_edit": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "columns": 0, + "fieldname": "prevent_pos", + "fieldtype": "Check", + "hidden": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_filter": 0, + "in_global_search": 0, + "in_list_view": 0, + "in_standard_filter": 0, + "label": "Prevent POs", + "length": 0, + "no_copy": 0, + "permlevel": 0, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "read_only": 1, + "remember_last_selected_value": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_bulk_edit": 0, - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "columns": 0, - "fieldname": "column_break_16", - "fieldtype": "Column Break", - "hidden": 0, - "ignore_user_permissions": 0, - "ignore_xss_filter": 0, - "in_filter": 0, - "in_global_search": 0, - "in_list_view": 0, - "in_standard_filter": 0, - "length": 0, - "no_copy": 0, - "permlevel": 0, - "precision": "", - "print_hide": 0, - "print_hide_if_no_value": 0, - "read_only": 0, - "remember_last_selected_value": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_bulk_edit": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "columns": 0, + "fieldname": "column_break_16", + "fieldtype": "Column Break", + "hidden": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_filter": 0, + "in_global_search": 0, + "in_list_view": 0, + "in_standard_filter": 0, + "length": 0, + "no_copy": 0, + "permlevel": 0, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "read_only": 0, + "remember_last_selected_value": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_bulk_edit": 0, - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "columns": 0, - "fieldname": "notify_supplier", - "fieldtype": "Check", - "hidden": 1, - "ignore_user_permissions": 0, - "ignore_xss_filter": 0, - "in_filter": 0, - "in_global_search": 0, - "in_list_view": 0, - "in_standard_filter": 0, - "label": "Notify Supplier", - "length": 0, - "no_copy": 0, - "permlevel": 0, - "precision": "", - "print_hide": 0, - "print_hide_if_no_value": 0, - "read_only": 1, - "remember_last_selected_value": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_bulk_edit": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "columns": 0, + "fieldname": "notify_supplier", + "fieldtype": "Check", + "hidden": 1, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_filter": 0, + "in_global_search": 0, + "in_list_view": 0, + "in_standard_filter": 0, + "label": "Notify Supplier", + "length": 0, + "no_copy": 0, + "permlevel": 0, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "read_only": 1, + "remember_last_selected_value": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_bulk_edit": 0, - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "columns": 0, - "fieldname": "notify_employee", - "fieldtype": "Check", - "hidden": 1, - "ignore_user_permissions": 0, - "ignore_xss_filter": 0, - "in_filter": 0, - "in_global_search": 0, - "in_list_view": 0, - "in_standard_filter": 0, - "label": "Notify Employee", - "length": 0, - "no_copy": 0, - "permlevel": 0, - "precision": "", - "print_hide": 0, - "print_hide_if_no_value": 0, - "read_only": 1, - "remember_last_selected_value": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_bulk_edit": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "columns": 0, + "fieldname": "notify_employee", + "fieldtype": "Check", + "hidden": 1, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_filter": 0, + "in_global_search": 0, + "in_list_view": 0, + "in_standard_filter": 0, + "label": "Notify Employee", + "length": 0, + "no_copy": 0, + "permlevel": 0, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "read_only": 1, + "remember_last_selected_value": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_bulk_edit": 0, - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "columns": 0, - "fieldname": "employee", - "fieldtype": "Link", - "hidden": 1, - "ignore_user_permissions": 0, - "ignore_xss_filter": 0, - "in_filter": 0, - "in_global_search": 0, - "in_list_view": 0, - "in_standard_filter": 0, - "label": "Employee", - "length": 0, - "no_copy": 0, - "options": "Employee", - "permlevel": 0, - "precision": "", - "print_hide": 0, - "print_hide_if_no_value": 0, - "read_only": 1, - "remember_last_selected_value": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_bulk_edit": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "columns": 0, + "fieldname": "employee", + "fieldtype": "Link", + "hidden": 1, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_filter": 0, + "in_global_search": 0, + "in_list_view": 0, + "in_standard_filter": 0, + "label": "Employee", + "length": 0, + "no_copy": 0, + "options": "Employee", + "permlevel": 0, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "read_only": 1, + "remember_last_selected_value": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 } - ], - "has_web_view": 0, - "hide_heading": 0, - "hide_toolbar": 0, - "idx": 0, - "image_view": 0, - "in_create": 0, - "is_submittable": 0, - "issingle": 0, - "istable": 0, - "max_attachments": 0, - "modified": "2017-07-12 07:33:11.874949", - "modified_by": "Administrator", - "module": "Buying", - "name": "Supplier Scorecard", - "name_case": "", - "owner": "Administrator", + ], + "has_web_view": 0, + "hide_heading": 0, + "hide_toolbar": 0, + "idx": 0, + "image_view": 0, + "in_create": 0, + "is_submittable": 0, + "issingle": 0, + "istable": 0, + "max_attachments": 0, + "modified": "2019-01-22 11:42:19.918990", + "modified_by": "Administrator", + "module": "Buying", + "name": "Supplier Scorecard", + "name_case": "", + "owner": "Administrator", "permissions": [ { - "amend": 0, - "apply_user_permissions": 0, - "cancel": 0, - "create": 1, - "delete": 1, - "email": 1, - "export": 1, - "if_owner": 0, - "import": 0, - "permlevel": 0, - "print": 1, - "read": 1, - "report": 1, - "role": "System Manager", - "set_user_permissions": 0, - "share": 1, - "submit": 0, + "amend": 0, + "apply_user_permissions": 0, + "cancel": 0, + "create": 1, + "delete": 1, + "email": 1, + "export": 1, + "if_owner": 0, + "import": 0, + "permlevel": 0, + "print": 1, + "read": 1, + "report": 1, + "role": "System Manager", + "set_user_permissions": 0, + "share": 1, + "submit": 0, "write": 1 } - ], - "quick_entry": 0, - "read_only": 0, - "read_only_onload": 0, - "show_name_in_global_search": 0, - "sort_field": "modified", - "sort_order": "DESC", - "track_changes": 0, + ], + "quick_entry": 0, + "read_only": 0, + "read_only_onload": 0, + "show_name_in_global_search": 0, + "sort_field": "modified", + "sort_order": "DESC", + "track_changes": 0, "track_seen": 0 } \ No newline at end of file diff --git a/erpnext/buying/doctype/supplier_scorecard/supplier_scorecard.py b/erpnext/buying/doctype/supplier_scorecard/supplier_scorecard.py index e13d22ab576..9e201e31926 100644 --- a/erpnext/buying/doctype/supplier_scorecard/supplier_scorecard.py +++ b/erpnext/buying/doctype/supplier_scorecard/supplier_scorecard.py @@ -54,6 +54,7 @@ class SupplierScorecard(Document): `tabSupplier Scorecard Period` scp WHERE scp.scorecard = %(sc)s + AND scp.docstatus = 1 ORDER BY scp.end_date DESC""", {"sc": self.name}, as_dict=1) @@ -110,7 +111,8 @@ def get_timeline_data(doctype, name): FROM `tabSupplier Scorecard Period` sc WHERE - sc.scorecard = %(scs)s""", + sc.scorecard = %(scs)s + AND sc.docstatus = 1""", {"scs": scs.name}, as_dict=1) for sc in scorecards: @@ -162,6 +164,7 @@ def make_all_scorecards(docname): `tabSupplier Scorecard Period` scp WHERE scp.scorecard = %(sc)s + AND scp.docstatus = 1 AND ( (scp.start_date > %(end_date)s AND scp.end_date < %(start_date)s) @@ -170,12 +173,12 @@ def make_all_scorecards(docname): AND scp.end_date > %(start_date)s)) ORDER BY scp.end_date DESC""", - {"sc": docname, "start_date": start_date, "end_date": end_date, "supplier": supplier}, as_dict=1) + {"sc": docname, "start_date": start_date, "end_date": end_date}, as_dict=1) if len(scorecards) == 0: period_card = make_supplier_scorecard(docname, None) period_card.start_date = start_date period_card.end_date = end_date - period_card.save() + period_card.submit() scp_count = scp_count + 1 if start_date < first_start_date: first_start_date = start_date diff --git a/erpnext/buying/doctype/supplier_scorecard/test_supplier_scorecard.py b/erpnext/buying/doctype/supplier_scorecard/test_supplier_scorecard.py index d64d3f683f6..6e6eaed95d3 100644 --- a/erpnext/buying/doctype/supplier_scorecard/test_supplier_scorecard.py +++ b/erpnext/buying/doctype/supplier_scorecard/test_supplier_scorecard.py @@ -21,12 +21,6 @@ class TestSupplierScorecard(unittest.TestCase): d.weight = 0 self.assertRaises(frappe.ValidationError,my_doc.insert) - def test_missing_variable(self): - delete_test_scorecards() - my_doc = make_supplier_scorecard() - del my_doc.variables - self.assertRaises(frappe.ValidationError,my_doc.insert) - def make_supplier_scorecard(): my_doc = frappe.get_doc(valid_scorecard[0]) @@ -118,56 +112,6 @@ valid_scorecard = [ } ], "prevent_pos":0, - "variables": [ - { - "param_name":"cost_of_on_time_shipments", - "doctype":"Supplier Scorecard Scoring Variable", - "parenttype":"Supplier Scorecard", - "variable_label":"Cost of On Time Shipments", - "path":"get_cost_of_on_time_shipments", - "parentfield":"variables" - }, - { - "param_name":"tot_cost_shipments", - "doctype":"Supplier Scorecard Scoring Variable", - "parenttype":"Supplier Scorecard", - "variable_label":"Total Cost of Shipments", - "path":"get_total_cost_of_shipments", - "parentfield":"variables" - }, - { - "param_name":"tot_days_late", - "doctype":"Supplier Scorecard Scoring Variable", - "parenttype":"Supplier Scorecard", - "variable_label":"Total Days Late", - "path":"get_total_days_late", - "parentfield":"variables" - }, - { - "param_name":"total_working_days", - "doctype":"Supplier Scorecard Scoring Variable", - "parenttype":"Supplier Scorecard", - "variable_label":"Total Working Days", - "path":"get_total_workdays", - "parentfield":"variables" - }, - { - "param_name":"on_time_shipment_num", - "doctype":"Supplier Scorecard Scoring Variable", - "parenttype":"Supplier Scorecard", - "variable_label":"# of On Time Shipments", - "path":"get_on_time_shipments", - "parentfield":"variables" - }, - { - "param_name":"total_shipments", - "doctype":"Supplier Scorecard Scoring Variable", - "parenttype":"Supplier Scorecard", - "variable_label":"Total Shipments", - "path":"get_total_shipments", - "parentfield":"variables" - } - ], "period":"Per Month", "doctype":"Supplier Scorecard", "warn_pos":0, @@ -177,14 +121,12 @@ valid_scorecard = [ { "weight":100.0, "doctype":"Supplier Scorecard Scoring Criteria", - "formula":"(({cost_of_on_time_shipments} / {tot_cost_shipments}) if {tot_cost_shipments} > 0 else 1 )* 100 ", - "criteria_name":"Delivery", - "max_score":100.0, + "criteria_name":"Delivery" } ], "supplier":"_Test Supplier", "name":"_Test Supplier", - "weighting_function":"{total_score} * max( 0, min ( 1 , (12 - {period_number}) / 12) )", + "weighting_function":"{total_score} * max( 0, min ( 1 , (12 - {period_number}) / 12) )" } ] diff --git a/erpnext/buying/doctype/supplier_scorecard_criteria/supplier_scorecard_criteria.json b/erpnext/buying/doctype/supplier_scorecard_criteria/supplier_scorecard_criteria.json index 229c3861207..2623585aeae 100644 --- a/erpnext/buying/doctype/supplier_scorecard_criteria/supplier_scorecard_criteria.json +++ b/erpnext/buying/doctype/supplier_scorecard_criteria/supplier_scorecard_criteria.json @@ -4,7 +4,7 @@ "allow_import": 0, "allow_rename": 0, "autoname": "field:criteria_name", - "beta": 1, + "beta": 0, "creation": "2017-05-29 01:32:43.064891", "custom": 0, "docstatus": 0, @@ -43,36 +43,6 @@ "set_only_once": 0, "unique": 1 }, - { - "allow_bulk_edit": 0, - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "columns": 0, - "fieldname": "weight", - "fieldtype": "Percent", - "hidden": 0, - "ignore_user_permissions": 0, - "ignore_xss_filter": 0, - "in_filter": 0, - "in_global_search": 0, - "in_list_view": 1, - "in_standard_filter": 0, - "label": "Criteria Weight", - "length": 0, - "no_copy": 0, - "permlevel": 0, - "precision": "", - "print_hide": 0, - "print_hide_if_no_value": 0, - "read_only": 0, - "remember_last_selected_value": 0, - "report_hide": 0, - "reqd": 1, - "search_index": 0, - "set_only_once": 0, - "unique": 0 - }, { "allow_bulk_edit": 0, "allow_on_submit": 0, @@ -87,7 +57,7 @@ "ignore_xss_filter": 0, "in_filter": 0, "in_global_search": 0, - "in_list_view": 0, + "in_list_view": 1, "in_standard_filter": 0, "label": "Max Score", "length": 0, @@ -114,10 +84,10 @@ "fieldtype": "Small Text", "hidden": 0, "ignore_user_permissions": 0, - "ignore_xss_filter": 0, + "ignore_xss_filter": 1, "in_filter": 0, "in_global_search": 0, - "in_list_view": 0, + "in_list_view": 1, "in_standard_filter": 0, "label": "Criteria Formula", "length": 0, @@ -133,6 +103,36 @@ "search_index": 0, "set_only_once": 0, "unique": 0 + }, + { + "allow_bulk_edit": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "columns": 0, + "fieldname": "weight", + "fieldtype": "Percent", + "hidden": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_filter": 0, + "in_global_search": 0, + "in_list_view": 0, + "in_standard_filter": 0, + "label": "Criteria Weight", + "length": 0, + "no_copy": 0, + "permlevel": 0, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "read_only": 0, + "remember_last_selected_value": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, + "unique": 0 } ], "has_web_view": 0, @@ -145,7 +145,7 @@ "issingle": 0, "istable": 0, "max_attachments": 0, - "modified": "2017-07-17 10:30:47.458285", + "modified": "2019-01-22 10:47:00.000822", "modified_by": "Administrator", "module": "Buying", "name": "Supplier Scorecard Criteria", diff --git a/erpnext/buying/doctype/supplier_scorecard_criteria/supplier_scorecard_criteria.py b/erpnext/buying/doctype/supplier_scorecard_criteria/supplier_scorecard_criteria.py index 8514022b780..33a0dc78377 100644 --- a/erpnext/buying/doctype/supplier_scorecard_criteria/supplier_scorecard_criteria.py +++ b/erpnext/buying/doctype/supplier_scorecard_criteria/supplier_scorecard_criteria.py @@ -30,21 +30,11 @@ class SupplierScorecardCriteria(Document): for dummy2 in range(0, len(match.groups())): test_formula = test_formula.replace('{' + match.group(1) + '}', "0") - test_formula = test_formula.replace('<','<').replace('>','>') try: frappe.safe_eval(test_formula, None, {'max':max, 'min': min}) except Exception: frappe.throw(_("Error evaluating the criteria formula")) - - -@frappe.whitelist() -def get_scoring_criteria(criteria_name): - criteria = frappe.get_doc("Supplier Scorecard Criteria", criteria_name) - - return criteria - - @frappe.whitelist() def get_criteria_list(): criteria = frappe.db.sql(""" @@ -56,7 +46,6 @@ def get_criteria_list(): return criteria -@frappe.whitelist() def get_variables(criteria_name): criteria = frappe.get_doc("Supplier Scorecard Criteria", criteria_name) return _get_variables(criteria) @@ -69,21 +58,16 @@ def _get_variables(criteria): for dummy1, match in enumerate(mylist): for dummy2 in range(0, len(match.groups())): try: - #var = frappe.get_doc("Supplier Scorecard Variable", {'param_name' : d}) var = frappe.db.sql(""" SELECT - scv.name + scv.variable_label, scv.description, scv.param_name, scv.path FROM `tabSupplier Scorecard Variable` scv WHERE param_name=%(param)s""", - {'param':match.group(1)},)[0][0] + {'param':match.group(1)}, as_dict=1)[0] my_variables.append(var) except Exception: - # Ignore the ones where the variable can't be found frappe.throw(_('Unable to find variable: ') + str(match.group(1)), InvalidFormulaVariable) - #pass - - #frappe.msgprint(str(my_variables)) return my_variables diff --git a/erpnext/buying/doctype/supplier_scorecard_period/supplier_scorecard_period.js b/erpnext/buying/doctype/supplier_scorecard_period/supplier_scorecard_period.js index c51e8ab2df8..a4cdeb31957 100644 --- a/erpnext/buying/doctype/supplier_scorecard_period/supplier_scorecard_period.js +++ b/erpnext/buying/doctype/supplier_scorecard_period/supplier_scorecard_period.js @@ -6,9 +6,11 @@ frappe.ui.form.on("Supplier Scorecard Period", { onload: function(frm) { - frm.get_field("variables").grid.toggle_display("value", true); - frm.get_field("criteria").grid.toggle_display("score", true); - - + let criteria_grid = frm.get_field("criteria").grid; + criteria_grid.toggle_enable("criteria_name", false); + criteria_grid.toggle_enable("weight", false); + criteria_grid.toggle_display("max_score", true); + criteria_grid.toggle_display("formula", true); + criteria_grid.toggle_display("score", true); } }); diff --git a/erpnext/buying/doctype/supplier_scorecard_period/supplier_scorecard_period.json b/erpnext/buying/doctype/supplier_scorecard_period/supplier_scorecard_period.json index 0cf651454b6..e76f614983e 100644 --- a/erpnext/buying/doctype/supplier_scorecard_period/supplier_scorecard_period.json +++ b/erpnext/buying/doctype/supplier_scorecard_period/supplier_scorecard_period.json @@ -4,7 +4,7 @@ "allow_import": 0, "allow_rename": 0, "autoname": "naming_series:", - "beta": 1, + "beta": 0, "creation": "2017-05-30 00:38:18.773013", "custom": 0, "docstatus": 0, @@ -281,7 +281,7 @@ "read_only": 0, "remember_last_selected_value": 0, "report_hide": 0, - "reqd": 1, + "reqd": 0, "search_index": 0, "set_only_once": 0, "unique": 0 @@ -346,6 +346,36 @@ "search_index": 0, "set_only_once": 0, "unique": 0 + }, + { + "allow_bulk_edit": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "columns": 0, + "fieldname": "amended_from", + "fieldtype": "Link", + "hidden": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_filter": 0, + "in_global_search": 0, + "in_list_view": 0, + "in_standard_filter": 0, + "label": "Amended From", + "length": 0, + "no_copy": 1, + "options": "Supplier Scorecard Period", + "permlevel": 0, + "print_hide": 1, + "print_hide_if_no_value": 0, + "read_only": 1, + "remember_last_selected_value": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, + "unique": 0 } ], "has_web_view": 0, @@ -354,11 +384,11 @@ "idx": 0, "image_view": 0, "in_create": 1, - "is_submittable": 0, + "is_submittable": 1, "issingle": 0, "istable": 0, "max_attachments": 0, - "modified": "2017-07-12 07:33:26.130861", + "modified": "2019-01-23 13:58:26.137770", "modified_by": "Administrator", "module": "Buying", "name": "Supplier Scorecard Period", @@ -368,7 +398,7 @@ { "amend": 0, "apply_user_permissions": 0, - "cancel": 0, + "cancel": 1, "create": 1, "delete": 1, "email": 1, @@ -382,7 +412,7 @@ "role": "System Manager", "set_user_permissions": 0, "share": 1, - "submit": 0, + "submit": 1, "write": 1 } ], diff --git a/erpnext/buying/doctype/supplier_scorecard_period/supplier_scorecard_period.py b/erpnext/buying/doctype/supplier_scorecard_period/supplier_scorecard_period.py index 90b65bd35aa..737ddd6ddd5 100644 --- a/erpnext/buying/doctype/supplier_scorecard_period/supplier_scorecard_period.py +++ b/erpnext/buying/doctype/supplier_scorecard_period/supplier_scorecard_period.py @@ -8,6 +8,7 @@ from frappe import throw, _ from frappe.model.document import Document from frappe.model.mapper import get_mapped_doc import erpnext.buying.doctype.supplier_scorecard_variable.supplier_scorecard_variable as variable_functions +from erpnext.buying.doctype.supplier_scorecard_criteria.supplier_scorecard_criteria import get_variables class SupplierScorecardPeriod(Document): @@ -28,7 +29,6 @@ class SupplierScorecardPeriod(Document): def calculate_variables(self): for var in self.variables: - if '.' in var.path: method_to_call = import_string_path(var.path) var.value = method_to_call(self) @@ -39,29 +39,9 @@ class SupplierScorecardPeriod(Document): def calculate_criteria(self): - #Get the criteria for crit in self.criteria: - - #me = "" - my_eval_statement = crit.formula.replace("\r", "").replace("\n", "") - #for let in my_eval_statement: - # me += let.encode('hex') + " " - #frappe.msgprint(me) - - for var in self.variables: - if var.value: - if var.param_name in my_eval_statement: - my_eval_statement = my_eval_statement.replace('{' + var.param_name + '}', "{:.2f}".format(var.value)) - else: - if var.param_name in my_eval_statement: - my_eval_statement = my_eval_statement.replace('{' + var.param_name + '}', '0.0') - - #frappe.msgprint(my_eval_statement ) - - my_eval_statement = my_eval_statement.replace('<','<').replace('>','>') - try: - crit.score = min(crit.max_score, max( 0 ,frappe.safe_eval(my_eval_statement, None, {'max':max, 'min': min}))) + crit.score = min(crit.max_score, max( 0 ,frappe.safe_eval(self.get_eval_statement(crit.formula), None, {'max':max, 'min': min}))) except Exception: frappe.throw(_("Could not solve criteria score function for {0}. Make sure the formula is valid.".format(crit.criteria_name)),frappe.ValidationError) crit.score = 0 @@ -73,26 +53,27 @@ class SupplierScorecardPeriod(Document): self.total_score = myscore def calculate_weighted_score(self, weighing_function): - my_eval_statement = weighing_function.replace("\r", "").replace("\n", "") - - for var in self.variables: - if var.value: - if var.param_name in my_eval_statement: - my_eval_statement = my_eval_statement.replace('{' + var.param_name + '}', "{:.2f}".format(var.value)) - else: - if var.param_name in my_eval_statement: - my_eval_statement = my_eval_statement.replace('{' + var.param_name + '}', '0.0') - - my_eval_statement = my_eval_statement.replace('<','<').replace('>','>') - try: - weighed_score = frappe.safe_eval(my_eval_statement, None, {'max':max, 'min': min}) + weighed_score = frappe.safe_eval(self.get_eval_statement(weighing_function), None, {'max':max, 'min': min}) except Exception: frappe.throw(_("Could not solve weighted score function. Make sure the formula is valid."),frappe.ValidationError) weighed_score = 0 return weighed_score + def get_eval_statement(self, formula): + my_eval_statement = formula.replace("\r", "").replace("\n", "") + + for var in self.variables: + if var.value: + if var.param_name in my_eval_statement: + my_eval_statement = my_eval_statement.replace('{' + var.param_name + '}', "{:.2f}".format(var.value)) + else: + if var.param_name in my_eval_statement: + my_eval_statement = my_eval_statement.replace('{' + var.param_name + '}', '0.0') + + return my_eval_statement + def import_string_path(path): components = path.split('.') @@ -102,30 +83,28 @@ def import_string_path(path): return mod -def post_process(source, target): - pass - - @frappe.whitelist() def make_supplier_scorecard(source_name, target_doc=None): - #def update_item(obj, target, source_parent): - # target.qty = flt(obj.qty) - flt(obj.received_qty) - # target.stock_qty = (flt(obj.qty) - flt(obj.received_qty)) * flt(obj.conversion_factor) - # target.amount = (flt(obj.qty) - flt(obj.received_qty)) * flt(obj.rate) - # target.base_amount = (flt(obj.qty) - flt(obj.received_qty)) * \ - # flt(obj.rate) * flt(source_parent.conversion_rate) + def update_criteria_fields(obj, target, source_parent): + target.max_score, target.formula = frappe.db.get_value('Supplier Scorecard Criteria', + obj.criteria_name, ['max_score', 'formula']) + + def post_process(source, target): + variables = [] + for cr in target.criteria: + for var in get_variables(cr.criteria_name): + if var not in variables: + variables.append(var) + + target.extend('variables', variables) doc = get_mapped_doc("Supplier Scorecard", source_name, { "Supplier Scorecard": { "doctype": "Supplier Scorecard Period" }, - "Supplier Scorecard Scoring Variable": { - "doctype": "Supplier Scorecard Scoring Variable", - "add_if_empty": True - }, - "Supplier Scorecard Scoring Constraint": { - "doctype": "Supplier Scorecard Scoring Constraint", - "add_if_empty": True + "Supplier Scorecard Scoring Criteria": { + "doctype": "Supplier Scorecard Scoring Criteria", + "postprocess": update_criteria_fields, } }, target_doc, post_process) diff --git a/erpnext/buying/doctype/supplier_scorecard_scoring_criteria/supplier_scorecard_scoring_criteria.json b/erpnext/buying/doctype/supplier_scorecard_scoring_criteria/supplier_scorecard_scoring_criteria.json index 567738a6d09..55ed45e3200 100644 --- a/erpnext/buying/doctype/supplier_scorecard_scoring_criteria/supplier_scorecard_scoring_criteria.json +++ b/erpnext/buying/doctype/supplier_scorecard_scoring_criteria/supplier_scorecard_scoring_criteria.json @@ -1,280 +1,252 @@ { - "allow_copy": 0, - "allow_guest_to_view": 0, - "allow_import": 0, - "allow_rename": 0, - "beta": 1, - "creation": "2017-05-29 01:32:17.988454", - "custom": 0, - "docstatus": 0, - "doctype": "DocType", - "document_type": "", - "editable_grid": 1, - "engine": "InnoDB", + "allow_copy": 0, + "allow_guest_to_view": 0, + "allow_import": 0, + "allow_rename": 0, + "beta": 0, + "creation": "2017-05-29 01:32:17.988454", + "custom": 0, + "docstatus": 0, + "doctype": "DocType", + "document_type": "", + "editable_grid": 1, + "engine": "InnoDB", "fields": [ { - "allow_bulk_edit": 0, - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "columns": 3, - "fieldname": "criteria_name", - "fieldtype": "Link", - "hidden": 0, - "ignore_user_permissions": 0, - "ignore_xss_filter": 0, - "in_filter": 0, - "in_global_search": 0, - "in_list_view": 1, - "in_standard_filter": 0, - "label": "Criteria Name", - "length": 0, - "no_copy": 0, - "options": "Supplier Scorecard Criteria", - "permlevel": 0, - "precision": "", - "print_hide": 0, - "print_hide_if_no_value": 0, - "read_only": 0, - "remember_last_selected_value": 0, - "report_hide": 0, - "reqd": 1, - "search_index": 0, - "set_only_once": 0, + "allow_bulk_edit": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "columns": 5, + "fieldname": "criteria_name", + "fieldtype": "Link", + "hidden": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_filter": 0, + "in_global_search": 0, + "in_list_view": 1, + "in_standard_filter": 0, + "label": "Criteria Name", + "length": 0, + "no_copy": 0, + "options": "Supplier Scorecard Criteria", + "permlevel": 0, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "read_only": 0, + "remember_last_selected_value": 0, + "report_hide": 0, + "reqd": 1, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_bulk_edit": 0, - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "columns": 0, - "fieldname": "section_break_2", - "fieldtype": "Section Break", - "hidden": 0, - "ignore_user_permissions": 0, - "ignore_xss_filter": 0, - "in_filter": 0, - "in_global_search": 0, - "in_list_view": 0, - "in_standard_filter": 0, - "length": 0, - "no_copy": 0, - "permlevel": 0, - "precision": "", - "print_hide": 0, - "print_hide_if_no_value": 0, - "read_only": 0, - "remember_last_selected_value": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_bulk_edit": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "columns": 2, + "fieldname": "score", + "fieldtype": "Percent", + "hidden": 1, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_filter": 0, + "in_global_search": 0, + "in_list_view": 1, + "in_standard_filter": 0, + "label": "Score", + "length": 0, + "no_copy": 0, + "permlevel": 0, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "read_only": 1, + "remember_last_selected_value": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_bulk_edit": 0, - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "columns": 2, - "fieldname": "weight", - "fieldtype": "Percent", - "hidden": 0, - "ignore_user_permissions": 0, - "ignore_xss_filter": 0, - "in_filter": 0, - "in_global_search": 0, - "in_list_view": 1, - "in_standard_filter": 0, - "label": "Criteria Weight", - "length": 0, - "no_copy": 0, - "permlevel": 0, - "precision": "", - "print_hide": 0, - "print_hide_if_no_value": 0, - "read_only": 0, - "remember_last_selected_value": 0, - "report_hide": 0, - "reqd": 1, - "search_index": 0, - "set_only_once": 0, + "allow_bulk_edit": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "columns": 0, + "fieldname": "column_break_4", + "fieldtype": "Column Break", + "hidden": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_filter": 0, + "in_global_search": 0, + "in_list_view": 0, + "in_standard_filter": 0, + "length": 0, + "no_copy": 0, + "permlevel": 0, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "read_only": 0, + "remember_last_selected_value": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_bulk_edit": 0, - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "columns": 0, - "fieldname": "column_break_4", - "fieldtype": "Column Break", - "hidden": 0, - "ignore_user_permissions": 0, - "ignore_xss_filter": 0, - "in_filter": 0, - "in_global_search": 0, - "in_list_view": 0, - "in_standard_filter": 0, - "length": 0, - "no_copy": 0, - "permlevel": 0, - "precision": "", - "print_hide": 0, - "print_hide_if_no_value": 0, - "read_only": 0, - "remember_last_selected_value": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_bulk_edit": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "columns": 2, + "fieldname": "weight", + "fieldtype": "Percent", + "hidden": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_filter": 0, + "in_global_search": 0, + "in_list_view": 1, + "in_standard_filter": 0, + "label": "Criteria Weight", + "length": 0, + "no_copy": 0, + "options": "", + "permlevel": 0, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "read_only": 0, + "remember_last_selected_value": 0, + "report_hide": 0, + "reqd": 1, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_bulk_edit": 0, - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "columns": 0, - "default": "100", - "fieldname": "max_score", - "fieldtype": "Float", - "hidden": 0, - "ignore_user_permissions": 0, - "ignore_xss_filter": 0, - "in_filter": 0, - "in_global_search": 0, - "in_list_view": 0, - "in_standard_filter": 0, - "label": "Max Score", - "length": 0, - "no_copy": 0, - "permlevel": 0, - "precision": "", - "print_hide": 0, - "print_hide_if_no_value": 0, - "read_only": 0, - "remember_last_selected_value": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_bulk_edit": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "columns": 0, + "default": "100", + "fieldname": "max_score", + "fieldtype": "Float", + "hidden": 1, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_filter": 0, + "in_global_search": 0, + "in_list_view": 0, + "in_standard_filter": 0, + "label": "Max Score", + "length": 0, + "no_copy": 0, + "permlevel": 0, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "read_only": 1, + "remember_last_selected_value": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_bulk_edit": 0, - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "columns": 0, - "fieldname": "section_break_6", - "fieldtype": "Section Break", - "hidden": 0, - "ignore_user_permissions": 0, - "ignore_xss_filter": 0, - "in_filter": 0, - "in_global_search": 0, - "in_list_view": 0, - "in_standard_filter": 0, - "length": 0, - "no_copy": 0, - "permlevel": 0, - "precision": "", - "print_hide": 0, - "print_hide_if_no_value": 0, - "read_only": 0, - "remember_last_selected_value": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_bulk_edit": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "columns": 0, + "fieldname": "section_break_6", + "fieldtype": "Section Break", + "hidden": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_filter": 0, + "in_global_search": 0, + "in_list_view": 0, + "in_standard_filter": 0, + "length": 0, + "no_copy": 0, + "permlevel": 0, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "read_only": 0, + "remember_last_selected_value": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 - }, + }, { - "allow_bulk_edit": 0, - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "columns": 0, - "fieldname": "formula", - "fieldtype": "Small Text", - "hidden": 0, - "ignore_user_permissions": 0, - "ignore_xss_filter": 0, - "in_filter": 0, - "in_global_search": 0, - "in_list_view": 0, - "in_standard_filter": 0, - "label": "Criteria Formula", - "length": 0, - "no_copy": 0, - "permlevel": 0, - "precision": "", - "print_hide": 0, - "print_hide_if_no_value": 0, - "read_only": 0, - "remember_last_selected_value": 0, - "report_hide": 0, - "reqd": 1, - "search_index": 0, - "set_only_once": 0, - "unique": 0 - }, - { - "allow_bulk_edit": 0, - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "columns": 0, - "fieldname": "score", - "fieldtype": "Percent", - "hidden": 1, - "ignore_user_permissions": 0, - "ignore_xss_filter": 0, - "in_filter": 0, - "in_global_search": 0, - "in_list_view": 1, - "in_standard_filter": 0, - "label": "Score", - "length": 0, - "no_copy": 0, - "permlevel": 0, - "precision": "", - "print_hide": 0, - "print_hide_if_no_value": 0, - "read_only": 0, - "remember_last_selected_value": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, + "allow_bulk_edit": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "columns": 0, + "fieldname": "formula", + "fieldtype": "Small Text", + "hidden": 1, + "ignore_user_permissions": 0, + "ignore_xss_filter": 1, + "in_filter": 0, + "in_global_search": 0, + "in_list_view": 0, + "in_standard_filter": 0, + "label": "Criteria Formula", + "length": 0, + "no_copy": 0, + "permlevel": 0, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "read_only": 1, + "remember_last_selected_value": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, "unique": 0 } - ], - "has_web_view": 0, - "hide_heading": 0, - "hide_toolbar": 0, - "idx": 0, - "image_view": 0, - "in_create": 0, - "is_submittable": 0, - "issingle": 0, - "istable": 1, - "max_attachments": 0, - "modified": "2017-07-12 07:33:41.532361", - "modified_by": "Administrator", - "module": "Buying", - "name": "Supplier Scorecard Scoring Criteria", - "name_case": "", - "owner": "Administrator", - "permissions": [], - "quick_entry": 1, - "read_only": 0, - "read_only_onload": 0, - "show_name_in_global_search": 0, - "sort_field": "modified", - "sort_order": "DESC", - "track_changes": 1, + ], + "has_web_view": 0, + "hide_heading": 0, + "hide_toolbar": 0, + "idx": 0, + "image_view": 0, + "in_create": 0, + "is_submittable": 0, + "issingle": 0, + "istable": 1, + "max_attachments": 0, + "modified": "2019-01-23 13:49:13.350095", + "modified_by": "Administrator", + "module": "Buying", + "name": "Supplier Scorecard Scoring Criteria", + "name_case": "", + "owner": "Administrator", + "permissions": [], + "quick_entry": 1, + "read_only": 0, + "read_only_onload": 0, + "show_name_in_global_search": 0, + "sort_field": "modified", + "sort_order": "DESC", + "track_changes": 1, "track_seen": 0 } \ No newline at end of file diff --git a/erpnext/buying/doctype/supplier_scorecard_scoring_standing/supplier_scorecard_scoring_standing.json b/erpnext/buying/doctype/supplier_scorecard_scoring_standing/supplier_scorecard_scoring_standing.json index 1fc04bb1201..e8498efb5e7 100644 --- a/erpnext/buying/doctype/supplier_scorecard_scoring_standing/supplier_scorecard_scoring_standing.json +++ b/erpnext/buying/doctype/supplier_scorecard_scoring_standing/supplier_scorecard_scoring_standing.json @@ -3,7 +3,7 @@ "allow_guest_to_view": 0, "allow_import": 0, "allow_rename": 0, - "beta": 1, + "beta": 0, "creation": "2017-05-29 01:36:22.697234", "custom": 0, "docstatus": 0, @@ -473,7 +473,7 @@ "issingle": 0, "istable": 1, "max_attachments": 0, - "modified": "2017-07-12 07:33:20.615684", + "modified": "2019-01-22 10:47:41.146704", "modified_by": "Administrator", "module": "Buying", "name": "Supplier Scorecard Scoring Standing", diff --git a/erpnext/buying/doctype/supplier_scorecard_scoring_variable/supplier_scorecard_scoring_variable.json b/erpnext/buying/doctype/supplier_scorecard_scoring_variable/supplier_scorecard_scoring_variable.json index f0e043e47a2..5e4c5c1e3a6 100644 --- a/erpnext/buying/doctype/supplier_scorecard_scoring_variable/supplier_scorecard_scoring_variable.json +++ b/erpnext/buying/doctype/supplier_scorecard_scoring_variable/supplier_scorecard_scoring_variable.json @@ -3,7 +3,7 @@ "allow_guest_to_view": 0, "allow_import": 0, "allow_rename": 0, - "beta": 1, + "beta": 0, "creation": "2017-05-29 01:30:06.105240", "custom": 0, "docstatus": 0, @@ -35,7 +35,7 @@ "precision": "", "print_hide": 0, "print_hide_if_no_value": 0, - "read_only": 0, + "read_only": 1, "remember_last_selected_value": 0, "report_hide": 0, "reqd": 1, @@ -65,7 +65,37 @@ "precision": "", "print_hide": 0, "print_hide_if_no_value": 0, - "read_only": 0, + "read_only": 1, + "remember_last_selected_value": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, + "unique": 0 + }, + { + "allow_bulk_edit": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "columns": 2, + "fieldname": "value", + "fieldtype": "Float", + "hidden": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_filter": 0, + "in_global_search": 0, + "in_list_view": 1, + "in_standard_filter": 0, + "label": "Value", + "length": 0, + "no_copy": 0, + "permlevel": 0, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "read_only": 1, "remember_last_selected_value": 0, "report_hide": 0, "reqd": 0, @@ -73,36 +103,6 @@ "set_only_once": 0, "unique": 0 }, - { - "allow_bulk_edit": 0, - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "columns": 0, - "fieldname": "is_custom", - "fieldtype": "Check", - "hidden": 0, - "ignore_user_permissions": 0, - "ignore_xss_filter": 0, - "in_filter": 0, - "in_global_search": 0, - "in_list_view": 0, - "in_standard_filter": 0, - "label": "Custom?", - "length": 0, - "no_copy": 0, - "permlevel": 0, - "precision": "", - "print_hide": 0, - "print_hide_if_no_value": 0, - "read_only": 1, - "remember_last_selected_value": 0, - "report_hide": 0, - "reqd": 1, - "search_index": 0, - "set_only_once": 0, - "unique": 0 - }, { "allow_bulk_edit": 0, "allow_on_submit": 0, @@ -111,7 +111,7 @@ "columns": 0, "fieldname": "param_name", "fieldtype": "Data", - "hidden": 0, + "hidden": 1, "ignore_user_permissions": 0, "ignore_xss_filter": 0, "in_filter": 0, @@ -128,7 +128,7 @@ "read_only": 1, "remember_last_selected_value": 0, "report_hide": 0, - "reqd": 1, + "reqd": 0, "search_index": 0, "set_only_once": 0, "unique": 0 @@ -141,7 +141,7 @@ "columns": 0, "fieldname": "path", "fieldtype": "Data", - "hidden": 0, + "hidden": 1, "ignore_user_permissions": 0, "ignore_xss_filter": 0, "in_filter": 0, @@ -158,36 +158,6 @@ "read_only": 1, "remember_last_selected_value": 0, "report_hide": 0, - "reqd": 1, - "search_index": 0, - "set_only_once": 0, - "unique": 0 - }, - { - "allow_bulk_edit": 0, - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "columns": 2, - "fieldname": "value", - "fieldtype": "Float", - "hidden": 1, - "ignore_user_permissions": 0, - "ignore_xss_filter": 0, - "in_filter": 0, - "in_global_search": 0, - "in_list_view": 1, - "in_standard_filter": 0, - "label": "Value", - "length": 0, - "no_copy": 0, - "permlevel": 0, - "precision": "", - "print_hide": 0, - "print_hide_if_no_value": 0, - "read_only": 0, - "remember_last_selected_value": 0, - "report_hide": 0, "reqd": 0, "search_index": 0, "set_only_once": 0, @@ -204,7 +174,7 @@ "issingle": 0, "istable": 1, "max_attachments": 0, - "modified": "2017-07-12 07:33:36.671502", + "modified": "2019-01-23 09:55:19.749828", "modified_by": "Administrator", "module": "Buying", "name": "Supplier Scorecard Scoring Variable", diff --git a/erpnext/buying/doctype/supplier_scorecard_standing/supplier_scorecard_standing.json b/erpnext/buying/doctype/supplier_scorecard_standing/supplier_scorecard_standing.json index b61b4edd725..b57881a096a 100644 --- a/erpnext/buying/doctype/supplier_scorecard_standing/supplier_scorecard_standing.json +++ b/erpnext/buying/doctype/supplier_scorecard_standing/supplier_scorecard_standing.json @@ -4,7 +4,7 @@ "allow_import": 0, "allow_rename": 0, "autoname": "field:standing_name", - "beta": 1, + "beta": 0, "creation": "2017-05-29 01:36:47.893639", "custom": 0, "docstatus": 0, @@ -385,7 +385,7 @@ "issingle": 0, "istable": 0, "max_attachments": 0, - "modified": "2017-07-12 07:33:16.560273", + "modified": "2019-01-22 10:47:49.195421", "modified_by": "Administrator", "module": "Buying", "name": "Supplier Scorecard Standing", diff --git a/erpnext/buying/doctype/supplier_scorecard_variable/supplier_scorecard_variable.json b/erpnext/buying/doctype/supplier_scorecard_variable/supplier_scorecard_variable.json index d24484025ca..d372905297f 100644 --- a/erpnext/buying/doctype/supplier_scorecard_variable/supplier_scorecard_variable.json +++ b/erpnext/buying/doctype/supplier_scorecard_variable/supplier_scorecard_variable.json @@ -4,7 +4,7 @@ "allow_import": 0, "allow_rename": 0, "autoname": "field:variable_label", - "beta": 1, + "beta": 0, "creation": "2017-05-29 01:30:34.688389", "custom": 0, "docstatus": 0, @@ -101,7 +101,7 @@ "reqd": 1, "search_index": 0, "set_only_once": 0, - "unique": 0 + "unique": 1 }, { "allow_bulk_edit": 0, @@ -203,7 +203,7 @@ "issingle": 0, "istable": 0, "max_attachments": 0, - "modified": "2017-07-12 07:33:31.395262", + "modified": "2019-01-23 09:39:59.866398", "modified_by": "Administrator", "module": "Buying", "name": "Supplier Scorecard Variable", diff --git a/erpnext/buying/doctype/supplier_scorecard_variable/supplier_scorecard_variable.py b/erpnext/buying/doctype/supplier_scorecard_variable/supplier_scorecard_variable.py index 17c911a0004..37fdc5724f5 100644 --- a/erpnext/buying/doctype/supplier_scorecard_variable/supplier_scorecard_variable.py +++ b/erpnext/buying/doctype/supplier_scorecard_variable/supplier_scorecard_variable.py @@ -27,13 +27,6 @@ class SupplierScorecardVariable(Document): if not hasattr(sys.modules[__name__], self.path): frappe.throw(_("Could not find path for " + self.path), VariablePathNotFound) - -@frappe.whitelist() -def get_scoring_variable(variable_label): - variable = frappe.get_doc("Supplier Scorecard Variable", variable_label) - - return variable - def get_total_workdays(scorecard): """ Gets the number of days in this period""" delta = getdate(scorecard.end_date) - getdate(scorecard.start_date) diff --git a/erpnext/change_log/v6/v6_13_1.md b/erpnext/change_log/v6/v6_13_1.md index 4b2c4a9cca2..d5a930e3b96 100644 --- a/erpnext/change_log/v6/v6_13_1.md +++ b/erpnext/change_log/v6/v6_13_1.md @@ -1 +1 @@ -- [ERPNext Manual in German](http://erpnext.org/docs/user/manual/de/) contributed by [CWT Connector & Wire Technology GmbH](http://www.cwt-assembly.com/) +- [ERPNext Manual in German](http://erpnext.com/docs/user/manual/de/) contributed by [CWT Connector & Wire Technology GmbH](http://www.cwt-assembly.com/) diff --git a/erpnext/controllers/accounts_controller.py b/erpnext/controllers/accounts_controller.py index 68f4f731476..97536e7e82d 100644 --- a/erpnext/controllers/accounts_controller.py +++ b/erpnext/controllers/accounts_controller.py @@ -218,6 +218,9 @@ class AccountsController(TransactionBase): if stock_qty != len(get_serial_nos(item.get('serial_no'))): item.set(fieldname, value) + if self.doctype in ["Purchase Invoice", "Sales Invoice"] and item.meta.get_field('is_fixed_asset'): + item.set('is_fixed_asset', ret.get('is_fixed_asset', 0)) + if ret.get("pricing_rule"): # if user changed the discount percentage then set user's discount percentage ? item.set("discount_percentage", ret.get("discount_percentage")) diff --git a/erpnext/hooks.py b/erpnext/hooks.py index ee31e32a3bb..5f1e7d4243c 100644 --- a/erpnext/hooks.py +++ b/erpnext/hooks.py @@ -15,8 +15,6 @@ develop_version = '10.x.x-develop' error_report_email = "support@erpnext.com" -docs_app = "foundation" - app_include_js = "assets/js/erpnext.min.js" app_include_css = "assets/css/erpnext.css" web_include_js = "assets/js/erpnext-web.min.js" diff --git a/erpnext/hr/doctype/leave_application/leave_application.json b/erpnext/hr/doctype/leave_application/leave_application.json index 7afbc4da898..eaef60cb623 100644 --- a/erpnext/hr/doctype/leave_application/leave_application.json +++ b/erpnext/hr/doctype/leave_application/leave_application.json @@ -3,7 +3,7 @@ "allow_guest_to_view": 0, "allow_import": 0, "allow_rename": 0, - "autoname": "LAP/.#####", + "autoname": "naming_series:", "beta": 0, "creation": "2013-02-20 11:18:11", "custom": 0, @@ -796,7 +796,7 @@ "issingle": 0, "istable": 0, "max_attachments": 3, - "modified": "2017-06-13 14:28:52.426044", + "modified": "2019-01-08 17:35:10.795225", "modified_by": "Administrator", "module": "HR", "name": "Leave Application", diff --git a/erpnext/hr/doctype/payroll_entry/payroll_entry.py b/erpnext/hr/doctype/payroll_entry/payroll_entry.py index c9d6290f261..734509592f4 100644 --- a/erpnext/hr/doctype/payroll_entry/payroll_entry.py +++ b/erpnext/hr/doctype/payroll_entry/payroll_entry.py @@ -525,3 +525,16 @@ def payroll_entry_has_bank_entries(name): response['submitted'] = 1 if bank_entries else 0 return response + +def get_payroll_entries_for_jv(doctype, txt, searchfield, start, page_len, filters): + return frappe.db.sql(""" + select name from `tabPayroll Entry` + where `{key}` LIKE %(txt)s + and name not in + (select reference_name from `tabJournal Entry Account` + where reference_type="Payroll Entry") + order by name limit %(start)s, %(page_len)s""" + .format(key=searchfield), { + 'txt': "%%%s%%" % frappe.db.escape(txt), + 'start': start, 'page_len': page_len + }) diff --git a/erpnext/hr/doctype/salary_slip/salary_slip.py b/erpnext/hr/doctype/salary_slip/salary_slip.py index 3ee98e6be03..11538cc368a 100644 --- a/erpnext/hr/doctype/salary_slip/salary_slip.py +++ b/erpnext/hr/doctype/salary_slip/salary_slip.py @@ -330,7 +330,7 @@ class SalarySlip(TransactionBase): if frappe.db.get_value('Timesheet', data.time_sheet, 'status') == 'Payrolled': frappe.throw(_("Salary Slip of employee {0} already created for time sheet {1}").format(self.employee, data.time_sheet)) - def sum_components(self, component_type, total_field): + def sum_components(self, component_type, total_field, precision): joining_date, relieving_date = frappe.db.get_value("Employee", self.employee, ["date_of_joining", "relieving_date"]) @@ -350,7 +350,7 @@ class SalarySlip(TransactionBase): )): d.amount = rounded( - (flt(d.default_amount) * flt(self.payment_days) + (flt(d.default_amount, precision) * flt(self.payment_days) / cint(self.total_working_days)), self.precision("amount", component_type) ) @@ -360,19 +360,19 @@ class SalarySlip(TransactionBase): elif not d.amount: d.amount = d.default_amount if not d.do_not_include_in_total: - self.set(total_field, self.get(total_field) + flt(d.amount)) + self.set(total_field, self.get(total_field) + flt(d.amount, precision)) def calculate_net_pay(self): if self.salary_structure: self.calculate_component_amounts() disable_rounded_total = cint(frappe.db.get_value("Global Defaults", None, "disable_rounded_total")) - + precision = frappe.defaults.get_global_default("currency_precision") self.total_deduction = 0 self.gross_pay = 0 - self.sum_components('earnings', 'gross_pay') - self.sum_components('deductions', 'total_deduction') + self.sum_components('earnings', 'gross_pay', precision) + self.sum_components('deductions', 'total_deduction', precision) self.set_loan_repayment() @@ -473,4 +473,4 @@ def unlink_ref_doc_from_salary_slip(ref_no): if linked_ss: for ss in linked_ss: ss_doc = frappe.get_doc("Salary Slip", ss) - frappe.db.set_value("Salary Slip", ss_doc.name, "journal_entry", "") \ No newline at end of file + frappe.db.set_value("Salary Slip", ss_doc.name, "journal_entry", "") diff --git a/erpnext/patches.txt b/erpnext/patches.txt index 9d5b3311236..d34a3fb87d0 100644 --- a/erpnext/patches.txt +++ b/erpnext/patches.txt @@ -507,4 +507,5 @@ erpnext.patches.v10_0.set_discount_amount erpnext.patches.v10_0.recalculate_gross_margin_for_project erpnext.patches.v10_0.delete_hub_documents erpnext.patches.v10_0.update_user_image_in_employee -erpnext.patches.v10_0.repost_gle_for_purchase_receipts_with_rejected_items \ No newline at end of file +erpnext.patches.v10_0.repost_gle_for_purchase_receipts_with_rejected_items +erpnext.patches.v10_0.allow_operators_in_supplier_scorecard \ No newline at end of file diff --git a/erpnext/patches/v10_0/allow_operators_in_supplier_scorecard.py b/erpnext/patches/v10_0/allow_operators_in_supplier_scorecard.py new file mode 100644 index 00000000000..827f9bc94fa --- /dev/null +++ b/erpnext/patches/v10_0/allow_operators_in_supplier_scorecard.py @@ -0,0 +1,23 @@ +# Copyright (c) 2019, Frappe and Contributors +# License: GNU General Public License v3. See license.txt + +from __future__ import unicode_literals +import frappe + +def execute(): + frappe.reload_doc('buying', 'doctype', 'supplier_scorecard_criteria') + frappe.reload_doc('buying', 'doctype', 'supplier_scorecard_scoring_criteria') + frappe.reload_doc('buying', 'doctype', 'supplier_scorecard') + + for criteria in frappe.get_all('Supplier Scorecard Criteria', fields=['name', 'formula'], limit_page_length=None): + frappe.db.set_value('Supplier Scorecard Criteria', criteria.name, + 'formula', criteria.formula.replace('<','<').replace('>','>')) + + for criteria in frappe.get_all('Supplier Scorecard Scoring Criteria', fields=['name', 'formula'], limit_page_length=None): + if criteria.formula: # not mandatory + frappe.db.set_value('Supplier Scorecard Scoring Criteria', criteria.name, + 'formula', criteria.formula.replace('<','<').replace('>','>')) + + for sc in frappe.get_all('Supplier Scorecard', fields=['name', 'weighting_function'], limit_page_length=None): + frappe.db.set_value('Supplier Scorecard', sc.name, 'weighting_function', + sc.weighting_function.replace('<','<').replace('>','>')) \ No newline at end of file diff --git a/erpnext/public/js/conf.js b/erpnext/public/js/conf.js index d256c08e13e..32cf0651694 100644 --- a/erpnext/public/js/conf.js +++ b/erpnext/public/js/conf.js @@ -14,7 +14,7 @@ $(document).bind('toolbar_setup', function() { $('.navbar-home').html(''); - $('[data-link="docs"]').attr("href", "https://frappe.github.io/erpnext/") + $('[data-link="docs"]').attr("href", "https://erpnext.com/docs") $('[data-link="issues"]').attr("href", "https://github.com/frappe/erpnext/issues") @@ -23,7 +23,8 @@ $(document).bind('toolbar_setup', function() { // additional help links for erpnext var $help_menu = $('.dropdown-help ul .documentation-links'); - + $('
  • '+__('Documentation')+'
  • ').insertBefore($help_menu); $('
  • '+__('User Forum')+'
  • ').insertBefore($help_menu); $('
  • {%= __("Go to the Desktop and start using ERPNext") %}
  • {%= __("View a list of all the help videos") %}
  • -
  • {%= __("Read the ERPNext Manual") %}
  • +
  • {%= __("Read the ERPNext Manual") %}
  • {%= __("Community Forum") %}
  • diff --git a/erpnext/templates/utils.py b/erpnext/templates/utils.py index eb84bcc8d85..8e14c067f10 100644 --- a/erpnext/templates/utils.py +++ b/erpnext/templates/utils.py @@ -16,7 +16,7 @@ def send_message(subject="Website Query", message="", sender="", status="Open"): customer = frappe.db.sql("""select distinct dl.link_name from `tabDynamic Link` dl left join `tabContact` c on dl.parent=c.name where dl.link_doctype='Customer' - and c.email_id='{email_id}'""".format(email_id=sender)) + and c.email_id = %s""", sender) if not customer: lead = frappe.db.get_value('Lead', dict(email_id=sender)) diff --git a/erpnext/utilities/user_progress.py b/erpnext/utilities/user_progress.py index 9f5935e3cbb..a6b5b49f08d 100644 --- a/erpnext/utilities/user_progress.py +++ b/erpnext/utilities/user_progress.py @@ -33,7 +33,7 @@ def get_slide_settings(): help_links=[ { "label": _("Chart of Accounts"), - "url": ["https://erpnext.org/docs/user/manual/en/accounts/chart-of-accounts"] + "url": ["https://erpnext.com/docs/user/manual/en/accounts/chart-of-accounts"] }, { "label": _("Opening Balances"), @@ -56,7 +56,7 @@ def get_slide_settings(): help_links=[ { "label": _('Learn More'), - "url": ["https://erpnext.org/docs/user/manual/en/setting-up/setting-company-sales-goal"] + "url": ["https://erpnext.com/docs/user/manual/en/setting-up/setting-company-sales-goal"] } ] ), @@ -80,7 +80,7 @@ def get_slide_settings(): help_links=[ { "label": _('Learn More'), - "url": ["https://erpnext.org/docs/user/manual/en/CRM/customer.html"] + "url": ["https://erpnext.com/docs/user/manual/en/CRM/customer.html"] } ] ), @@ -123,7 +123,7 @@ def get_slide_settings(): help_links=[ { "label": _('Learn More'), - "url": ["https://erpnext.org/docs/user/manual/en/buying/supplier"] + "url": ["https://erpnext.com/docs/user/manual/en/buying/supplier"] }, { "label": _('Customers and Suppliers'), @@ -261,7 +261,7 @@ def get_slide_settings(): help_links=[ { "label": _('Learn More'), - "url": ["https://erpnext.org/docs/user/manual/en/setting-up/users-and-permissions"] + "url": ["https://erpnext.com/docs/user/manual/en/setting-up/users-and-permissions"] }, { "label": _('Users and Permissions'),