From a4645b6d17e42283210555943049e315b8b49288 Mon Sep 17 00:00:00 2001 From: Rohit Waghchaure Date: Fri, 1 Feb 2019 11:37:22 +0530 Subject: [PATCH 01/16] fix: check open status projects for project status update --- erpnext/projects/doctype/project/project.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/erpnext/projects/doctype/project/project.py b/erpnext/projects/doctype/project/project.py index dcf485a8030..3b42f6a69db 100644 --- a/erpnext/projects/doctype/project/project.py +++ b/erpnext/projects/doctype/project/project.py @@ -459,7 +459,7 @@ def get_projects_for_collect_progress(frequency, fields): fields.extend(["name"]) return frappe.get_all("Project", fields = fields, - filters = {'collect_progress': 1, 'frequency': frequency}) + filters = {'collect_progress': 1, 'frequency': frequency, 'status': 'Open'}) def send_project_update_email_to_users(project): doc = frappe.get_doc('Project', project) From f3f4ce9b87416cb7015628474ffc3360979da23c Mon Sep 17 00:00:00 2001 From: Nabin Hait Date: Fri, 1 Feb 2019 11:59:18 +0530 Subject: [PATCH 02/16] fix: Fetch data based on item group filter in item dashboard stock balance report --- erpnext/stock/dashboard/item_dashboard.py | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/erpnext/stock/dashboard/item_dashboard.py b/erpnext/stock/dashboard/item_dashboard.py index d817e5ff2d9..6242fa767ef 100644 --- a/erpnext/stock/dashboard/item_dashboard.py +++ b/erpnext/stock/dashboard/item_dashboard.py @@ -13,7 +13,13 @@ def get_data(item_code=None, warehouse=None, item_group=None, if warehouse: filters.append(['warehouse', '=', warehouse]) if item_group: - filters.append(['item_group', '=', item_group]) + lft, rgt = frappe.db.get_value("Item Group", item_group, ["lft", "rgt"]) + items = frappe.db.sql_list(""" + select i.name from `tabItem` i + where exists(select name from `tabItem Group` + where name=i.item_group and lft >=%s and rgt<=%s) + """, (lft, rgt)) + filters.append(['item_code', 'in', items]) try: # check if user has any restrictions based on user permissions on warehouse if DatabaseQuery('Warehouse', user=frappe.session.user).build_match_conditions(): From e1c75a9d55eee6d7554084d924ebfb9e52d3c891 Mon Sep 17 00:00:00 2001 From: Nabin Hait Date: Fri, 1 Feb 2019 12:25:40 +0530 Subject: [PATCH 03/16] fix: fixed salary structure assignment patch (#16546) * fix: fixed salary structure assignment patch * fix: patch --- .../v11_0/create_salary_structure_assignments.py | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/erpnext/patches/v11_0/create_salary_structure_assignments.py b/erpnext/patches/v11_0/create_salary_structure_assignments.py index 2dab1940d8a..610fa85172f 100644 --- a/erpnext/patches/v11_0/create_salary_structure_assignments.py +++ b/erpnext/patches/v11_0/create_salary_structure_assignments.py @@ -4,6 +4,7 @@ from __future__ import unicode_literals import frappe from datetime import datetime +from frappe.utils import getdate from erpnext.hr.doctype.salary_structure_assignment.salary_structure_assignment import DuplicateAssignment def execute(): @@ -31,14 +32,22 @@ def execute(): where is_active='Yes' AND employee in (select name from `tabEmployee` where ifNull(status, '') != 'Left') """.format(cols), as_dict=1) - + for d in ss_details: try: + joining_date, relieving_date = frappe.db.get_value("Employee", d.employee, + ["date_of_joining", "relieving_date"]) + from_date = d.from_date + if joining_date and getdate(from_date) < joining_date: + from_date = joining_date + elif relieving_date and getdate(from_date) > relieving_date: + continue + s = frappe.new_doc("Salary Structure Assignment") s.employee = d.employee s.employee_name = d.employee_name s.salary_structure = d.salary_structure - s.from_date = d.from_date + s.from_date = from_date s.to_date = d.to_date if isinstance(d.to_date, datetime) else None s.base = d.get("base") s.variable = d.get("variable") From f667cff5a6719a10343bc7ff50f41b9846cd5fa8 Mon Sep 17 00:00:00 2001 From: dgarg007 Date: Sat, 2 Feb 2019 21:57:00 +0530 Subject: [PATCH 04/16] fix: Validation while getting raw materils for production in Production Plan --- .../doctype/production_plan/production_plan.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/erpnext/manufacturing/doctype/production_plan/production_plan.py b/erpnext/manufacturing/doctype/production_plan/production_plan.py index 6c84ef15caf..a2374c3701a 100644 --- a/erpnext/manufacturing/doctype/production_plan/production_plan.py +++ b/erpnext/manufacturing/doctype/production_plan/production_plan.py @@ -568,7 +568,11 @@ def get_items_for_material_requests(doc, sales_order=None, company=None): item_details = get_subitems(doc, data, item_details, bom_no, company, include_non_stock_items, include_subcontracted_items, 1, planned_qty=planned_qty) else: - item_master = frappe.get_doc('Item', data['item_code']).as_dict() + if data['item_code']: + item_master = frappe.get_doc('Item', data['item_code']).as_dict() + else: + frappe.throw(_("Please select items in SELECT ITEMS section")) + purchase_uom = item_master.purchase_uom or item_master.stock_uom conversion_factor = 0 for d in item_master.get("uoms"): From d442d0694720a23278398f43429e01fccd684f4e Mon Sep 17 00:00:00 2001 From: Deepesh Garg <42651287+deepeshgarg007@users.noreply.github.com> Date: Sun, 3 Feb 2019 12:45:20 +0530 Subject: [PATCH 05/16] Update production_plan.py --- .../manufacturing/doctype/production_plan/production_plan.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/erpnext/manufacturing/doctype/production_plan/production_plan.py b/erpnext/manufacturing/doctype/production_plan/production_plan.py index a2374c3701a..6b87cf3dbdf 100644 --- a/erpnext/manufacturing/doctype/production_plan/production_plan.py +++ b/erpnext/manufacturing/doctype/production_plan/production_plan.py @@ -571,7 +571,7 @@ def get_items_for_material_requests(doc, sales_order=None, company=None): if data['item_code']: item_master = frappe.get_doc('Item', data['item_code']).as_dict() else: - frappe.throw(_("Please select items in SELECT ITEMS section")) + frappe.throw(_("Please select items first")) purchase_uom = item_master.purchase_uom or item_master.stock_uom conversion_factor = 0 From ff05ee50e0e9f5e94174e1282bb2ca30ac4e78ac Mon Sep 17 00:00:00 2001 From: Nabin Hait Date: Mon, 4 Feb 2019 14:42:48 +0530 Subject: [PATCH 06/16] fix: Allow-on-submit enabled for formula and condition in salary structure --- erpnext/hr/doctype/salary_detail/salary_detail.json | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/erpnext/hr/doctype/salary_detail/salary_detail.json b/erpnext/hr/doctype/salary_detail/salary_detail.json index bc9812c34f5..0ec3cd64138 100644 --- a/erpnext/hr/doctype/salary_detail/salary_detail.json +++ b/erpnext/hr/doctype/salary_detail/salary_detail.json @@ -1,5 +1,6 @@ { "allow_copy": 0, + "allow_events_in_timeline": 0, "allow_guest_to_view": 0, "allow_import": 0, "allow_rename": 0, @@ -348,7 +349,7 @@ { "allow_bulk_edit": 0, "allow_in_quick_entry": 0, - "allow_on_submit": 0, + "allow_on_submit": 1, "bold": 0, "collapsible": 0, "columns": 0, @@ -417,7 +418,7 @@ { "allow_bulk_edit": 0, "allow_in_quick_entry": 0, - "allow_on_submit": 0, + "allow_on_submit": 1, "bold": 0, "collapsible": 0, "columns": 0, @@ -692,7 +693,7 @@ "issingle": 0, "istable": 1, "max_attachments": 0, - "modified": "2018-09-20 16:59:33.622652", + "modified": "2019-02-04 14:41:56.030991", "modified_by": "Administrator", "module": "HR", "name": "Salary Detail", From bbebceb31af4b105cd7ec5cfd24dfc7366fd0a97 Mon Sep 17 00:00:00 2001 From: Saurabh Date: Thu, 24 Jan 2019 15:34:41 +0530 Subject: [PATCH 07/16] fix: access request parameter directly --- erpnext/templates/pages/non_profit/join-chapter.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/erpnext/templates/pages/non_profit/join-chapter.html b/erpnext/templates/pages/non_profit/join-chapter.html index 029cd770081..89a7d2aace8 100644 --- a/erpnext/templates/pages/non_profit/join-chapter.html +++ b/erpnext/templates/pages/non_profit/join-chapter.html @@ -15,7 +15,7 @@ {{ chapter_button() }}

Leave Chapter

{% else %} - {% if frappe.local.request.method=='POST' %} + {% if request.method=='POST' %}

Welcome to chapter {{ chapter.name }}!

{{ chapter_button() }} {% else %} From 125505f2aafd7f4c2f922a4ec07d421e38271e8c Mon Sep 17 00:00:00 2001 From: Chinmay Pai Date: Mon, 4 Feb 2019 16:30:20 +0530 Subject: [PATCH 08/16] fix(purchase_invoice): fix undefined variable fixes issue while creating purchase invoice Signed-off-by: Chinmay Pai --- erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py b/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py index f2d5006cd0a..0dd716df3ff 100644 --- a/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py +++ b/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py @@ -231,7 +231,7 @@ class PurchaseInvoice(BuyingController): item.expense_account = warehouse_account[item.warehouse]["account"] else: item.expense_account = stock_not_billed_account - elif item.is_fixed_asset and d.pr_detail: + elif item.is_fixed_asset and item.pr_detail: item.expense_account = asset_received_but_not_billed elif not item.expense_account and for_validate: throw(_("Expense account is mandatory for item {0}").format(item.item_code or item.item_name)) From 780c6b0d776624522414a07d55a60d10688e8542 Mon Sep 17 00:00:00 2001 From: Rohit Waghchaure Date: Mon, 4 Feb 2019 21:04:48 +0530 Subject: [PATCH 09/16] fix: job card not working if transfer against work order --- erpnext/manufacturing/doctype/job_card/job_card.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/erpnext/manufacturing/doctype/job_card/job_card.py b/erpnext/manufacturing/doctype/job_card/job_card.py index 5343a280ca7..5ed03be5451 100644 --- a/erpnext/manufacturing/doctype/job_card/job_card.py +++ b/erpnext/manufacturing/doctype/job_card/job_card.py @@ -57,7 +57,7 @@ class JobCard(Document): .format(d.idx, d.item_code)) if self.get('operation') == d.operation: - child = self.append('items', { + self.append('items', { 'item_code': d.item_code, 'source_warehouse': d.source_warehouse, 'uom': frappe.db.get_value("Item", d.item_code, 'stock_uom'), @@ -108,6 +108,10 @@ class JobCard(Document): if not self.items: self.transferred_qty = self.for_quantity if self.docstatus == 1 else 0 + doc = frappe.get_doc('Work Order', self.get('work_order')) + if doc.transfer_material_against == 'Work Order' or doc.skip_transfer: + return + if self.items: self.transferred_qty = frappe.db.get_value('Stock Entry', { 'job_card': self.name, From ac18498ca5e07de4bc2862d5f399784550089d60 Mon Sep 17 00:00:00 2001 From: Nabin Hait Date: Mon, 4 Feb 2019 21:13:43 +0530 Subject: [PATCH 10/16] fix: Optimising payment reconciliation queries --- erpnext/accounts/utils.py | 79 +++++++++++++++++++++------------------ 1 file changed, 42 insertions(+), 37 deletions(-) diff --git a/erpnext/accounts/utils.py b/erpnext/accounts/utils.py index e145a35b17f..58e3e8793d6 100644 --- a/erpnext/accounts/utils.py +++ b/erpnext/accounts/utils.py @@ -617,14 +617,14 @@ def get_held_invoices(party_type, party): def get_outstanding_invoices(party_type, party, account, condition=None, limit=1000): outstanding_invoices = [] - precision = frappe.get_precision("Sales Invoice", "outstanding_amount") + precision = frappe.get_precision("Sales Invoice", "outstanding_amount") or 2 if erpnext.get_party_account_type(party_type) == 'Receivable': dr_or_cr = "debit_in_account_currency - credit_in_account_currency" - payment_dr_or_cr = "payment_gl_entry.credit_in_account_currency - payment_gl_entry.debit_in_account_currency" + payment_dr_or_cr = "credit_in_account_currency - debit_in_account_currency" else: dr_or_cr = "credit_in_account_currency - debit_in_account_currency" - payment_dr_or_cr = "payment_gl_entry.debit_in_account_currency - payment_gl_entry.credit_in_account_currency" + payment_dr_or_cr = "debit_in_account_currency - credit_in_account_currency" invoice = 'Sales Invoice' if erpnext.get_party_account_type(party_type) == 'Receivable' else 'Purchase Invoice' held_invoices = get_held_invoices(party_type, party) @@ -632,21 +632,9 @@ def get_outstanding_invoices(party_type, party, account, condition=None, limit=1 invoice_list = frappe.db.sql(""" select - voucher_no, voucher_type, posting_date, ifnull(sum({dr_or_cr}), 0) as invoice_amount, - ( - select ifnull(sum({payment_dr_or_cr}), 0) - from `tabGL Entry` payment_gl_entry - where payment_gl_entry.against_voucher_type = invoice_gl_entry.voucher_type - and if(invoice_gl_entry.voucher_type='Journal Entry', - payment_gl_entry.against_voucher = invoice_gl_entry.voucher_no, - payment_gl_entry.against_voucher = invoice_gl_entry.against_voucher) - and payment_gl_entry.party_type = invoice_gl_entry.party_type - and payment_gl_entry.party = invoice_gl_entry.party - and payment_gl_entry.account = invoice_gl_entry.account - and {payment_dr_or_cr} > 0 - ) as payment_amount + voucher_no, voucher_type, posting_date, ifnull(sum({dr_or_cr}), 0) as invoice_amount from - `tabGL Entry` invoice_gl_entry + `tabGL Entry` where party_type = %(party_type)s and party = %(party)s and account = %(account)s and {dr_or_cr} > 0 @@ -655,11 +643,9 @@ def get_outstanding_invoices(party_type, party, account, condition=None, limit=1 and (against_voucher = '' or against_voucher is null)) or (voucher_type not in ('Journal Entry', 'Payment Entry'))) group by voucher_type, voucher_no - having (invoice_amount - payment_amount) > 0.005 order by posting_date, name {limit_cond}""".format( dr_or_cr=dr_or_cr, invoice = invoice, - payment_dr_or_cr=payment_dr_or_cr, condition=condition or "", limit_cond = limit_cond ), { @@ -668,25 +654,46 @@ def get_outstanding_invoices(party_type, party, account, condition=None, limit=1 "account": account, }, as_dict=True) - for d in invoice_list: - if not d.voucher_type == "Purchase Invoice" or d.voucher_no not in held_invoices: - due_date = frappe.db.get_value( - d.voucher_type, d.voucher_no, "posting_date" if party_type == "Employee" else "due_date") + payment_entries = frappe.db.sql(""" + select against_voucher_type, against_voucher, + ifnull(sum({payment_dr_or_cr}), 0) as payment_amount + from `tabGL Entry` + where party_type = %(party_type)s and party = %(party)s + and account = %(account)s + and {payment_dr_or_cr} > 0 + and against_voucher is not null and against_voucher != '' + group by against_voucher_type, against_voucher + """.format(payment_dr_or_cr=payment_dr_or_cr), { + "party_type": party_type, + "party": party, + "account": account, + }, as_dict=True) - outstanding_invoices.append( - frappe._dict({ - 'voucher_no': d.voucher_no, - 'voucher_type': d.voucher_type, - 'posting_date': d.posting_date, - 'invoice_amount': flt(d.invoice_amount), - 'payment_amount': flt(d.payment_amount), - 'outstanding_amount': flt(d.invoice_amount - d.payment_amount, precision), - 'due_date': due_date - }) - ) + pe_map = frappe._dict() + for d in payment_entries: + pe_map.setdefault((d.against_voucher_type, d.against_voucher), d.payment_amount) + + for d in invoice_list: + payment_amount = pe_map.get((d.voucher_type, d.voucher_no), 0) + outstanding_amount = flt(d.invoice_amount - payment_amount, precision) + if outstanding_amount > 0.5 / (10**precision): + if not d.voucher_type == "Purchase Invoice" or d.voucher_no not in held_invoices: + due_date = frappe.db.get_value( + d.voucher_type, d.voucher_no, "posting_date" if party_type == "Employee" else "due_date") + + outstanding_invoices.append( + frappe._dict({ + 'voucher_no': d.voucher_no, + 'voucher_type': d.voucher_type, + 'posting_date': d.posting_date, + 'invoice_amount': flt(d.invoice_amount), + 'payment_amount': payment_amount, + 'outstanding_amount': outstanding_amount, + 'due_date': due_date + }) + ) outstanding_invoices = sorted(outstanding_invoices, key=lambda k: k['due_date'] or getdate(nowdate())) - return outstanding_invoices @@ -859,5 +866,3 @@ def get_allow_cost_center_in_entry_of_bs_account(): def generator(): return cint(frappe.db.get_value('Accounts Settings', None, 'allow_cost_center_in_entry_of_bs_account')) return frappe.local_cache("get_allow_cost_center_in_entry_of_bs_account", (), generator, regenerate_if_none=True) - - From fe6f1ad2440130be171efdded86c9bcde71a889b Mon Sep 17 00:00:00 2001 From: Nabin Hait Date: Tue, 5 Feb 2019 10:34:58 +0530 Subject: [PATCH 11/16] Update production_plan.py --- .../doctype/production_plan/production_plan.py | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/erpnext/manufacturing/doctype/production_plan/production_plan.py b/erpnext/manufacturing/doctype/production_plan/production_plan.py index 6b87cf3dbdf..d17adf6369b 100644 --- a/erpnext/manufacturing/doctype/production_plan/production_plan.py +++ b/erpnext/manufacturing/doctype/production_plan/production_plan.py @@ -567,12 +567,8 @@ def get_items_for_material_requests(doc, sales_order=None, company=None): else: item_details = get_subitems(doc, data, item_details, bom_no, company, include_non_stock_items, include_subcontracted_items, 1, planned_qty=planned_qty) - else: - if data['item_code']: - item_master = frappe.get_doc('Item', data['item_code']).as_dict() - else: - frappe.throw(_("Please select items first")) - + elif data.get('item_code'): + item_master = frappe.get_doc('Item', data['item_code']).as_dict() purchase_uom = item_master.purchase_uom or item_master.stock_uom conversion_factor = 0 for d in item_master.get("uoms"): From 294319e71b2fd36d55ef81e39685811105933951 Mon Sep 17 00:00:00 2001 From: Nabin Hait Date: Sat, 2 Feb 2019 12:39:15 +0530 Subject: [PATCH 12/16] fix: Don't force fetch cost center from company in payroll entry --- erpnext/hr/doctype/payroll_entry/payroll_entry.js | 2 ++ erpnext/hr/doctype/payroll_entry/payroll_entry.json | 5 +++-- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/erpnext/hr/doctype/payroll_entry/payroll_entry.js b/erpnext/hr/doctype/payroll_entry/payroll_entry.js index fa1b63cee8d..e4ab68068c4 100644 --- a/erpnext/hr/doctype/payroll_entry/payroll_entry.js +++ b/erpnext/hr/doctype/payroll_entry/payroll_entry.js @@ -95,6 +95,8 @@ frappe.ui.form.on('Payroll Entry', { }, setup: function (frm) { + frm.add_fetch('company', 'cost_center', 'cost_center'); + frm.set_query("payment_account", function () { var account_types = ["Bank", "Cash"]; return { diff --git a/erpnext/hr/doctype/payroll_entry/payroll_entry.json b/erpnext/hr/doctype/payroll_entry/payroll_entry.json index a898f8896b9..07e743433c7 100644 --- a/erpnext/hr/doctype/payroll_entry/payroll_entry.json +++ b/erpnext/hr/doctype/payroll_entry/payroll_entry.json @@ -1,5 +1,6 @@ { "allow_copy": 1, + "allow_events_in_timeline": 0, "allow_guest_to_view": 0, "allow_import": 0, "allow_rename": 0, @@ -861,7 +862,7 @@ "bold": 0, "collapsible": 0, "columns": 0, - "fetch_from": "company.cost_center", + "fetch_from": "", "fieldname": "cost_center", "fieldtype": "Link", "hidden": 0, @@ -1189,7 +1190,7 @@ "issingle": 0, "istable": 0, "max_attachments": 0, - "modified": "2018-08-21 16:15:45.276711", + "modified": "2019-02-02 12:37:07.846885", "modified_by": "Administrator", "module": "HR", "name": "Payroll Entry", From 38b05a129672f139a2158e1caf3cf7d61e05d871 Mon Sep 17 00:00:00 2001 From: Nabin Hait Date: Tue, 5 Feb 2019 10:46:41 +0530 Subject: [PATCH 13/16] fix: Set default cost center in payroll entry --- erpnext/hr/doctype/payroll_entry/payroll_entry.json | 3 ++- erpnext/hr/doctype/payroll_entry/test_payroll_entry.py | 2 ++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/erpnext/hr/doctype/payroll_entry/payroll_entry.json b/erpnext/hr/doctype/payroll_entry/payroll_entry.json index 07e743433c7..562b999b827 100644 --- a/erpnext/hr/doctype/payroll_entry/payroll_entry.json +++ b/erpnext/hr/doctype/payroll_entry/payroll_entry.json @@ -862,6 +862,7 @@ "bold": 0, "collapsible": 0, "columns": 0, + "default": ":Company", "fetch_from": "", "fieldname": "cost_center", "fieldtype": "Link", @@ -1190,7 +1191,7 @@ "issingle": 0, "istable": 0, "max_attachments": 0, - "modified": "2019-02-02 12:37:07.846885", + "modified": "2019-02-05 10:41:08.865842", "modified_by": "Administrator", "module": "HR", "name": "Payroll Entry", diff --git a/erpnext/hr/doctype/payroll_entry/test_payroll_entry.py b/erpnext/hr/doctype/payroll_entry/test_payroll_entry.py index ada8e3d86fe..3cf13226db9 100644 --- a/erpnext/hr/doctype/payroll_entry/test_payroll_entry.py +++ b/erpnext/hr/doctype/payroll_entry/test_payroll_entry.py @@ -21,6 +21,8 @@ class TestPayrollEntry(unittest.TestCase): make_earning_salary_component(setup=True) make_deduction_salary_component(setup=True) + frappe.db.set_value("HR Settings", None, "email_salary_slip_to_employee", 0) + def test_payroll_entry(self): # pylint: disable=no-self-use company = erpnext.get_default_company() for data in frappe.get_all('Salary Component', fields = ["name"]): From 8a46df5c4ba716265126052a189cd3acdaebe593 Mon Sep 17 00:00:00 2001 From: Nabin Hait Date: Tue, 5 Feb 2019 13:31:32 +0530 Subject: [PATCH 14/16] Removed duplicate fields --- .../doctype/bom_item/bom_item.json | 67 +------------------ 1 file changed, 1 insertion(+), 66 deletions(-) diff --git a/erpnext/manufacturing/doctype/bom_item/bom_item.json b/erpnext/manufacturing/doctype/bom_item/bom_item.json index 754540eb6bc..22583605777 100644 --- a/erpnext/manufacturing/doctype/bom_item/bom_item.json +++ b/erpnext/manufacturing/doctype/bom_item/bom_item.json @@ -78,39 +78,6 @@ "translatable": 0, "unique": 0 }, - { - "allow_bulk_edit": 0, - "allow_in_quick_entry": 0, - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "columns": 0, - "fieldname": "operation", - "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": "Item operation", - "length": 0, - "no_copy": 0, - "options": "Operation", - "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, - "translatable": 0, - "unique": 0 - }, { "allow_bulk_edit": 0, "allow_in_quick_entry": 0, @@ -926,38 +893,6 @@ "translatable": 0, "unique": 0 }, - { - "allow_bulk_edit": 0, - "allow_in_quick_entry": 0, - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "columns": 0, - "fieldname": "allow_alternative_item", - "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": "Allow Alternative Item", - "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, - "translatable": 0, - "unique": 0 - }, { "allow_bulk_edit": 0, "allow_in_quick_entry": 0, @@ -1115,4 +1050,4 @@ "track_changes": 0, "track_seen": 0, "track_views": 0 -} \ No newline at end of file +} From 4cb0a250a0045cb3e912237b57eb46f5c6c13cc3 Mon Sep 17 00:00:00 2001 From: karthikeyan5 Date: Thu, 24 Jan 2019 19:12:21 +0530 Subject: [PATCH 15/16] fix(marketplace): bug in filtering menu_items > UX improvment for incomplete feature --- erpnext/public/js/hub/pages/Item.vue | 30 +++++++++++++++------------- 1 file changed, 16 insertions(+), 14 deletions(-) diff --git a/erpnext/public/js/hub/pages/Item.vue b/erpnext/public/js/hub/pages/Item.vue index 7735aa23376..8dbd397a8ea 100644 --- a/erpnext/public/js/hub/pages/Item.vue +++ b/erpnext/public/js/hub/pages/Item.vue @@ -53,7 +53,20 @@ export default { image: null, sections: [], - menu_items: [ + }; + }, + computed: { + is_own_item() { + let is_own_item = false; + if(this.item) { + if(this.item.hub_seller === hub.settings.hub_seller_name) { + is_own_item = true; + } + } + return is_own_item; + }, + menu_items(){ + return [ { label: __('Save Item'), condition: hub.is_user_registered() && !this.is_own_item, @@ -75,17 +88,6 @@ export default { action: this.unpublish_item } ] - }; - }, - computed: { - is_own_item() { - let is_own_item = false; - if(this.item) { - if(this.item.hub_seller === hub.settings.hub_seller_name) { - is_own_item = true; - } - } - return is_own_item; }, item_subtitle() { @@ -272,11 +274,11 @@ export default { }, edit_details() { - // + frappe.msgprint(__('This feature is under development...')); }, unpublish_item() { - // + frappe.msgprint(__('This feature is under development...')); } } } From 8aa34a0ce0f88cb7aade1df2b4e330f44529af19 Mon Sep 17 00:00:00 2001 From: Sagar Vora Date: Tue, 5 Feb 2019 19:00:38 +0550 Subject: [PATCH 16/16] bumped to version 11.1.4 --- erpnext/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/erpnext/__init__.py b/erpnext/__init__.py index d5f17c81ceb..89ac6d9b18c 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__ = '11.1.3' +__version__ = '11.1.4' def get_default_company(user=None): '''Get default company for user'''