diff --git a/erpnext/accounts/doctype/payment_request/payment_request.py b/erpnext/accounts/doctype/payment_request/payment_request.py index 53ff2225d3..68aeb6d1d6 100644 --- a/erpnext/accounts/doctype/payment_request/payment_request.py +++ b/erpnext/accounts/doctype/payment_request/payment_request.py @@ -326,7 +326,7 @@ def make_payment_request(**args): "reference_doctype": args.dt, "reference_name": args.dn, "party_type": args.get("party_type") or "Customer", - "party": args.get("party") or ref_doc.customer, + "party": args.get("party") or ref_doc.get("customer"), "bank_account": bank_account }) @@ -420,7 +420,7 @@ def make_payment_entry(docname): def update_payment_req_status(doc, method): from erpnext.accounts.doctype.payment_entry.payment_entry import get_reference_details - + for ref in doc.references: payment_request_name = frappe.db.get_value("Payment Request", {"reference_doctype": ref.reference_doctype, "reference_name": ref.reference_name, @@ -430,7 +430,7 @@ def update_payment_req_status(doc, method): ref_details = get_reference_details(ref.reference_doctype, ref.reference_name, doc.party_account_currency) pay_req_doc = frappe.get_doc('Payment Request', payment_request_name) status = pay_req_doc.status - + if status != "Paid" and not ref_details.outstanding_amount: status = 'Paid' elif status != "Partially Paid" and ref_details.outstanding_amount != ref_details.total_amount: diff --git a/erpnext/buying/doctype/supplier/supplier_dashboard.py b/erpnext/buying/doctype/supplier/supplier_dashboard.py index d0d5b73984..16251035bd 100644 --- a/erpnext/buying/doctype/supplier/supplier_dashboard.py +++ b/erpnext/buying/doctype/supplier/supplier_dashboard.py @@ -23,15 +23,11 @@ def get_data(): }, { 'label': _('Payments'), - 'items': ['Payment Entry'] - }, - { - 'label': _('Bank'), - 'items': ['Bank Account'] + 'items': ['Payment Entry', 'Bank Account'] }, { 'label': _('Pricing'), 'items': ['Pricing Rule'] } ] - } \ No newline at end of file + } diff --git a/erpnext/education/doctype/fees/fees.js b/erpnext/education/doctype/fees/fees.js index e2c6f1d856..17ef44954b 100644 --- a/erpnext/education/doctype/fees/fees.js +++ b/erpnext/education/doctype/fees/fees.js @@ -112,6 +112,8 @@ frappe.ui.form.on("Fees", { args: { "dt": frm.doc.doctype, "dn": frm.doc.name, + "party_type": "Student", + "party": frm.doc.student, "recipient_id": frm.doc.student_email }, callback: function(r) { diff --git a/erpnext/education/doctype/fees/fees.py b/erpnext/education/doctype/fees/fees.py index aa616e6206..f31003bf32 100644 --- a/erpnext/education/doctype/fees/fees.py +++ b/erpnext/education/doctype/fees/fees.py @@ -75,7 +75,8 @@ class Fees(AccountsController): self.make_gl_entries() if self.send_payment_request and self.student_email: - pr = make_payment_request(dt="Fees", dn=self.name, recipient_id=self.student_email, + pr = make_payment_request(party_type="Student", party=self.student, dt="Fees", + dn=self.name, recipient_id=self.student_email, submit_doc=True, use_dummy_message=True) frappe.msgprint(_("Payment request {0} created").format(getlink("Payment Request", pr.name))) diff --git a/erpnext/education/doctype/student/student_dashboard.py b/erpnext/education/doctype/student/student_dashboard.py index 0cbd17b8a4..d2614628b1 100644 --- a/erpnext/education/doctype/student/student_dashboard.py +++ b/erpnext/education/doctype/student/student_dashboard.py @@ -6,6 +6,9 @@ def get_data(): 'heatmap': True, 'heatmap_message': _('This is based on the attendance of this Student'), 'fieldname': 'student', + 'non_standard_fieldnames': { + 'Bank Account': 'party' + }, 'transactions': [ { 'label': _('Admission'), @@ -29,7 +32,7 @@ def get_data(): }, { 'label': _('Fee'), - 'items': ['Fees'] + 'items': ['Fees', 'Bank Account'] } ] - } \ No newline at end of file + } diff --git a/erpnext/hr/doctype/employee/employee_dashboard.py b/erpnext/hr/doctype/employee/employee_dashboard.py index 11ad83ba37..0203332164 100644 --- a/erpnext/hr/doctype/employee/employee_dashboard.py +++ b/erpnext/hr/doctype/employee/employee_dashboard.py @@ -6,6 +6,9 @@ def get_data(): 'heatmap': True, 'heatmap_message': _('This is based on the attendance of this Employee'), 'fieldname': 'employee', + 'non_standard_fieldnames': { + 'Bank Account': 'party' + }, 'transactions': [ { 'label': _('Leave and Attendance'), @@ -33,7 +36,7 @@ def get_data(): }, { 'label': _('Payroll'), - 'items': ['Salary Structure Assignment', 'Salary Slip', 'Additional Salary', 'Timesheet','Employee Incentive', 'Retention Bonus'] + 'items': ['Salary Structure Assignment', 'Salary Slip', 'Additional Salary', 'Timesheet','Employee Incentive', 'Retention Bonus', 'Bank Account'] }, { 'label': _('Training'), diff --git a/erpnext/non_profit/doctype/member/member_dashboard.py b/erpnext/non_profit/doctype/member/member_dashboard.py index 945fb7b7d3..743db2513a 100644 --- a/erpnext/non_profit/doctype/member/member_dashboard.py +++ b/erpnext/non_profit/doctype/member/member_dashboard.py @@ -6,10 +6,17 @@ def get_data(): 'heatmap': True, 'heatmap_message': _('Member Activity'), 'fieldname': 'member', + 'non_standard_fieldnames': { + 'Bank Account': 'party' + }, 'transactions': [ { 'label': _('Membership Details'), 'items': ['Membership'] + }, + { + 'label': _('Fee'), + 'items': ['Bank Account'] } ] - } \ No newline at end of file + } diff --git a/erpnext/public/js/utils/dimension_tree_filter.js b/erpnext/public/js/utils/dimension_tree_filter.js index 75c5a820b4..b223fc557b 100644 --- a/erpnext/public/js/utils/dimension_tree_filter.js +++ b/erpnext/public/js/utils/dimension_tree_filter.js @@ -24,7 +24,7 @@ doctypes_with_dimensions.forEach((doctype) => { onload: function(frm) { erpnext.dimension_filters.forEach((dimension) => { frappe.model.with_doctype(dimension['document_type'], () => { - if (frappe.meta.has_field(dimension['document_type'], 'is_group')) { + if(frappe.meta.has_field(dimension['document_type'], 'is_group')) { frm.set_query(dimension['fieldname'], { "is_group": 0 }); @@ -42,19 +42,21 @@ doctypes_with_dimensions.forEach((doctype) => { update_dimension: function(frm) { erpnext.dimension_filters.forEach((dimension) => { - if (frm.is_new()) { - if (frm.doc.company && Object.keys(default_dimensions || {}).length > 0 + if(frm.is_new()) { + if(frm.doc.company && Object.keys(default_dimensions || {}).length > 0 && default_dimensions[frm.doc.company]) { - if (frappe.meta.has_field(doctype, dimension['fieldname'])) { - frm.set_value(dimension['fieldname'], - default_dimensions[frm.doc.company][dimension['document_type']]); - } + let default_dimension = default_dimensions[frm.doc.company][dimension['document_type']]; - $.each(frm.doc.items || frm.doc.accounts || [], function(i, row) { - frappe.model.set_value(row.doctype, row.name, dimension['fieldname'], - default_dimensions[frm.doc.company][dimension['document_type']]) - }); + if(default_dimension) { + if (frappe.meta.has_field(doctype, dimension['fieldname'])) { + frm.set_value(dimension['fieldname'], default_dimension); + } + + $.each(frm.doc.items || frm.doc.accounts || [], function(i, row) { + frappe.model.set_value(row.doctype, row.name, dimension['fieldname'], default_dimension); + }); + } } } }); @@ -71,20 +73,6 @@ child_docs.forEach((doctype) => { }); }, - accounts_add: function(frm, cdt, cdn) { - erpnext.dimension_filters.forEach((dimension) => { - var row = frappe.get_doc(cdt, cdn); - frm.script_manager.copy_from_first_row("accounts", row, [dimension['fieldname']]); - }); - }, - - items_add: function(frm, cdt, cdn) { - erpnext.dimension_filters.forEach((dimension) => { - var row = frappe.get_doc(cdt, cdn); - frm.script_manager.copy_from_first_row("items", row, [dimension['fieldname']]); - }); - }, - accounts_add: function(frm, cdt, cdn) { erpnext.dimension_filters.forEach((dimension) => { var row = frappe.get_doc(cdt, cdn); diff --git a/erpnext/selling/doctype/customer/customer_dashboard.py b/erpnext/selling/doctype/customer/customer_dashboard.py index 654dd48c66..22e30e3113 100644 --- a/erpnext/selling/doctype/customer/customer_dashboard.py +++ b/erpnext/selling/doctype/customer/customer_dashboard.py @@ -11,7 +11,8 @@ def get_data(): 'non_standard_fieldnames': { 'Payment Entry': 'party', 'Quotation': 'party_name', - 'Opportunity': 'party_name' + 'Opportunity': 'party_name', + 'Bank Account': 'party' }, 'dynamic_links': { 'party_name': ['Customer', 'quotation_to'] @@ -27,7 +28,7 @@ def get_data(): }, { 'label': _('Payments'), - 'items': ['Payment Entry'] + 'items': ['Payment Entry', 'Bank Account'] }, { 'label': _('Support'), diff --git a/erpnext/stock/doctype/stock_entry/stock_entry.js b/erpnext/stock/doctype/stock_entry/stock_entry.js index 496a865af7..e4412e0bbc 100644 --- a/erpnext/stock/doctype/stock_entry/stock_entry.js +++ b/erpnext/stock/doctype/stock_entry/stock_entry.js @@ -215,9 +215,7 @@ frappe.ui.form.on('Stock Entry', { source_doctype: "Material Request", target: frm, date_field: "schedule_date", - setters: { - company: frm.doc.company, - }, + setters: {}, get_query_filters: { docstatus: 1, material_request_type: ["in", ["Material Transfer", "Material Issue"]], diff --git a/erpnext/stock/doctype/stock_entry/stock_entry.json b/erpnext/stock/doctype/stock_entry/stock_entry.json index bdd0bd0de1..704ae41bc5 100644 --- a/erpnext/stock/doctype/stock_entry/stock_entry.json +++ b/erpnext/stock/doctype/stock_entry/stock_entry.json @@ -1,4 +1,5 @@ { + "actions": [], "allow_import": 1, "autoname": "naming_series:", "creation": "2013-04-09 11:43:55", @@ -12,7 +13,6 @@ "stock_entry_type", "outgoing_stock_entry", "purpose", - "company", "work_order", "purchase_order", "delivery_note_no", @@ -20,6 +20,7 @@ "pick_list", "purchase_receipt_no", "col2", + "company", "posting_date", "posting_time", "set_posting_time", @@ -65,6 +66,7 @@ "dimension_col_break", "printing_settings", "select_print_heading", + "print_settings_col_break", "letter_head", "more_info", "is_opening", @@ -291,6 +293,7 @@ "fieldtype": "Section Break" }, { + "description": "Sets 'Source Warehouse' in each row of the items table.", "fieldname": "from_warehouse", "fieldtype": "Link", "in_list_view": 1, @@ -320,6 +323,7 @@ "fieldtype": "Column Break" }, { + "description": "Sets 'Target Warehouse' in each row of the items table.", "fieldname": "to_warehouse", "fieldtype": "Link", "in_list_view": 1, @@ -622,12 +626,17 @@ "label": "Pick List", "options": "Pick List", "read_only": 1 + }, + { + "fieldname": "print_settings_col_break", + "fieldtype": "Column Break" } ], "icon": "fa fa-file-text", "idx": 1, "is_submittable": 1, - "modified": "2019-09-27 14:38:20.801420", + "links": [], + "modified": "2020-04-23 12:56:52.881752", "modified_by": "Administrator", "module": "Stock", "name": "Stock Entry", diff --git a/erpnext/stock/doctype/stock_entry_detail/stock_entry_detail.json b/erpnext/stock/doctype/stock_entry_detail/stock_entry_detail.json index a848c80cf2..c16a41c24f 100644 --- a/erpnext/stock/doctype/stock_entry_detail/stock_entry_detail.json +++ b/erpnext/stock/doctype/stock_entry_detail/stock_entry_detail.json @@ -14,12 +14,12 @@ "t_warehouse", "sec_break1", "item_code", - "item_group", "col_break2", "item_name", "section_break_8", "description", "column_break_10", + "item_group", "image", "image_view", "quantity_and_rate", @@ -178,6 +178,7 @@ "bold": 1, "fieldname": "basic_rate", "fieldtype": "Currency", + "in_list_view": 1, "label": "Basic Rate (as per Stock UOM)", "oldfieldname": "incoming_rate", "oldfieldtype": "Currency", @@ -420,6 +421,7 @@ "options": "Item" }, { + "collapsible": 1, "fieldname": "reference_section", "fieldtype": "Section Break", "label": "Reference" @@ -466,7 +468,6 @@ "fetch_from": "item_code.item_group", "fieldname": "item_group", "fieldtype": "Data", - "in_list_view": 1, "label": "Item Group" }, { @@ -495,7 +496,7 @@ "idx": 1, "istable": 1, "links": [], - "modified": "2020-03-19 12:34:09.836295", + "modified": "2020-04-23 19:19:28.539769", "modified_by": "Administrator", "module": "Stock", "name": "Stock Entry Detail", diff --git a/erpnext/stock/report/stock_ledger/stock_ledger.py b/erpnext/stock/report/stock_ledger/stock_ledger.py index 28d72084de..0190f09f3d 100644 --- a/erpnext/stock/report/stock_ledger/stock_ledger.py +++ b/erpnext/stock/report/stock_ledger/stock_ledger.py @@ -46,19 +46,6 @@ def execute(filters=None): "out_qty": min(sle.actual_qty, 0) }) - # get the name of the item that was produced using this item - if sle.voucher_type == "Stock Entry": - purpose, work_order, fg_completed_qty = frappe.db.get_value(sle.voucher_type, sle.voucher_no, ["purpose", "work_order", "fg_completed_qty"]) - - if purpose == "Manufacture" and work_order: - finished_product = frappe.db.get_value("Work Order", work_order, "item_name") - finished_qty = fg_completed_qty - - sle.update({ - "finished_product": finished_product, - "finished_qty": finished_qty, - }) - data.append(sle) if include_uom: @@ -77,8 +64,6 @@ def get_columns(): {"label": _("In Qty"), "fieldname": "in_qty", "fieldtype": "Float", "width": 80, "convertible": "qty"}, {"label": _("Out Qty"), "fieldname": "out_qty", "fieldtype": "Float", "width": 80, "convertible": "qty"}, {"label": _("Balance Qty"), "fieldname": "qty_after_transaction", "fieldtype": "Float", "width": 100, "convertible": "qty"}, - {"label": _("Finished Product"), "fieldname": "finished_product", "width": 100}, - {"label": _("Finished Qty"), "fieldname": "finished_qty", "fieldtype": "Float", "width": 100, "convertible": "qty"}, {"label": _("Voucher #"), "fieldname": "voucher_no", "fieldtype": "Dynamic Link", "options": "voucher_type", "width": 150}, {"label": _("Warehouse"), "fieldname": "warehouse", "fieldtype": "Link", "options": "Warehouse", "width": 150}, {"label": _("Item Group"), "fieldname": "item_group", "fieldtype": "Link", "options": "Item Group", "width": 100},