Merge pull request #21493 from deepeshgarg007/item_wise_sale_purchase
fix: Group by filter fix in item wise sales and purchase register
diff --git a/erpnext/accounts/doctype/payment_request/payment_request.py b/erpnext/accounts/doctype/payment_request/payment_request.py
index 53ff222..68aeb6d 100644
--- a/erpnext/accounts/doctype/payment_request/payment_request.py
+++ b/erpnext/accounts/doctype/payment_request/payment_request.py
@@ -326,7 +326,7 @@
"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 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 @@
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/accounts/report/consolidated_financial_statement/consolidated_financial_statement.py b/erpnext/accounts/report/consolidated_financial_statement/consolidated_financial_statement.py
index b62238b..c2c7207 100644
--- a/erpnext/accounts/report/consolidated_financial_statement/consolidated_financial_statement.py
+++ b/erpnext/accounts/report/consolidated_financial_statement/consolidated_financial_statement.py
@@ -84,6 +84,7 @@
def get_profit_loss_data(fiscal_year, companies, columns, filters):
income, expense, net_profit_loss = get_income_expense_data(companies, fiscal_year, filters)
+ company_currency = get_company_currency(filters)
data = []
data.extend(income or [])
@@ -93,7 +94,7 @@
chart = get_pl_chart_data(filters, columns, income, expense, net_profit_loss)
- report_summary = get_pl_summary(companies, '', income, expense, net_profit_loss, True)
+ report_summary = get_pl_summary(companies, '', income, expense, net_profit_loss, company_currency, True)
return data, None, chart, report_summary
diff --git a/erpnext/accounts/report/gross_profit/gross_profit.py b/erpnext/accounts/report/gross_profit/gross_profit.py
index 6ef6d6e..4e22b05 100644
--- a/erpnext/accounts/report/gross_profit/gross_profit.py
+++ b/erpnext/accounts/report/gross_profit/gross_profit.py
@@ -55,27 +55,27 @@
columns = []
column_map = frappe._dict({
"parent": _("Sales Invoice") + ":Link/Sales Invoice:120",
- "posting_date": _("Posting Date") + ":Date",
- "posting_time": _("Posting Time"),
- "item_code": _("Item Code") + ":Link/Item",
- "item_name": _("Item Name"),
- "item_group": _("Item Group") + ":Link/Item Group",
- "brand": _("Brand"),
- "description": _("Description"),
- "warehouse": _("Warehouse") + ":Link/Warehouse",
- "qty": _("Qty") + ":Float",
- "base_rate": _("Avg. Selling Rate") + ":Currency/currency",
- "buying_rate": _("Valuation Rate") + ":Currency/currency",
- "base_amount": _("Selling Amount") + ":Currency/currency",
- "buying_amount": _("Buying Amount") + ":Currency/currency",
- "gross_profit": _("Gross Profit") + ":Currency/currency",
- "gross_profit_percent": _("Gross Profit %") + ":Percent",
- "project": _("Project") + ":Link/Project",
+ "posting_date": _("Posting Date") + ":Date:100",
+ "posting_time": _("Posting Time") + ":Data:100",
+ "item_code": _("Item Code") + ":Link/Item:100",
+ "item_name": _("Item Name") + ":Data:100",
+ "item_group": _("Item Group") + ":Link/Item Group:100",
+ "brand": _("Brand") + ":Link/Brand:100",
+ "description": _("Description") +":Data:100",
+ "warehouse": _("Warehouse") + ":Link/Warehouse:100",
+ "qty": _("Qty") + ":Float:80",
+ "base_rate": _("Avg. Selling Rate") + ":Currency/currency:100",
+ "buying_rate": _("Valuation Rate") + ":Currency/currency:100",
+ "base_amount": _("Selling Amount") + ":Currency/currency:100",
+ "buying_amount": _("Buying Amount") + ":Currency/currency:100",
+ "gross_profit": _("Gross Profit") + ":Currency/currency:100",
+ "gross_profit_percent": _("Gross Profit %") + ":Percent:100",
+ "project": _("Project") + ":Link/Project:100",
"sales_person": _("Sales person"),
- "allocated_amount": _("Allocated Amount") + ":Currency/currency",
- "customer": _("Customer") + ":Link/Customer",
- "customer_group": _("Customer Group") + ":Link/Customer Group",
- "territory": _("Territory") + ":Link/Territory"
+ "allocated_amount": _("Allocated Amount") + ":Currency/currency:100",
+ "customer": _("Customer") + ":Link/Customer:100",
+ "customer_group": _("Customer Group") + ":Link/Customer Group:100",
+ "territory": _("Territory") + ":Link/Territory:100"
})
for col in group_wise_columns.get(scrub(filters.group_by)):
@@ -85,7 +85,8 @@
"fieldname": "currency",
"label" : _("Currency"),
"fieldtype": "Link",
- "options": "Currency"
+ "options": "Currency",
+ "hidden": 1
})
return columns
@@ -277,7 +278,7 @@
from `tabPurchase Invoice Item` a
where a.item_code = %s and a.docstatus=1
and modified <= %s
- order by a.modified desc limit 1""", (item_code,self.filters.to_date))
+ order by a.modified desc limit 1""", (item_code, self.filters.to_date))
else:
last_purchase_rate = frappe.db.sql("""
select (a.base_rate / a.conversion_factor)
diff --git a/erpnext/buying/doctype/purchase_order/purchase_order.js b/erpnext/buying/doctype/purchase_order/purchase_order.js
index ed054ae..4a8146a 100644
--- a/erpnext/buying/doctype/purchase_order/purchase_order.js
+++ b/erpnext/buying/doctype/purchase_order/purchase_order.js
@@ -27,15 +27,6 @@
frm.set_indicator_formatter('item_code',
function(doc) { return (doc.qty<=doc.received_qty) ? "green" : "orange" })
- frm.set_query("blanket_order", "items", function() {
- return {
- filters: {
- "company": frm.doc.company,
- "docstatus": 1
- }
- }
- });
-
frm.set_query("expense_account", "items", function() {
return {
query: "erpnext.controllers.queries.get_expense_account",
diff --git a/erpnext/buying/doctype/supplier/supplier_dashboard.py b/erpnext/buying/doctype/supplier/supplier_dashboard.py
index d0d5b73..1625103 100644
--- a/erpnext/buying/doctype/supplier/supplier_dashboard.py
+++ b/erpnext/buying/doctype/supplier/supplier_dashboard.py
@@ -23,15 +23,11 @@
},
{
'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/controllers/queries.py b/erpnext/controllers/queries.py
index c14bb66..5febfd6 100644
--- a/erpnext/controllers/queries.py
+++ b/erpnext/controllers/queries.py
@@ -371,6 +371,19 @@
fields = ["name", "parent_account"],
limit_start=start, limit_page_length=page_len, as_list=True)
+def get_blanket_orders(doctype, txt, searchfield, start, page_len, filters):
+ return frappe.db.sql("""select distinct bo.name, bo.blanket_order_type, bo.to_date
+ from `tabBlanket Order` bo, `tabBlanket Order Item` boi
+ where
+ boi.parent = bo.name
+ and boi.item_code = {item_code}
+ and bo.blanket_order_type = '{blanket_order_type}'
+ and bo.company = {company}
+ and bo.docstatus = 1"""
+ .format(item_code = frappe.db.escape(filters.get("item")),
+ blanket_order_type = filters.get("blanket_order_type"),
+ company = frappe.db.escape(filters.get("company"))
+ ))
@frappe.whitelist()
def get_income_account(doctype, txt, searchfield, start, page_len, filters):
diff --git a/erpnext/controllers/stock_controller.py b/erpnext/controllers/stock_controller.py
index 55a2c43..9d453af 100644
--- a/erpnext/controllers/stock_controller.py
+++ b/erpnext/controllers/stock_controller.py
@@ -3,7 +3,7 @@
from __future__ import unicode_literals
import frappe, erpnext
-from frappe.utils import cint, flt, cstr
+from frappe.utils import cint, flt, cstr, get_link_to_form, today, getdate
from frappe import _
import frappe.defaults
from erpnext.accounts.utils import get_fiscal_year
@@ -55,6 +55,13 @@
frappe.throw(_("Row #{0}: Serial No {1} does not belong to Batch {2}")
.format(d.idx, serial_no_data.name, d.batch_no))
+ if d.qty > 0 and d.get("batch_no") and self.get("posting_date") and self.docstatus < 2:
+ expiry_date = frappe.get_cached_value("Batch", d.get("batch_no"), "expiry_date")
+
+ if expiry_date and getdate(expiry_date) < getdate(self.posting_date):
+ frappe.throw(_("Row #{0}: The batch {1} has already expired.")
+ .format(d.idx, get_link_to_form("Batch", d.get("batch_no"))))
+
def get_gl_entries(self, warehouse_account=None, default_expense_account=None,
default_cost_center=None):
diff --git a/erpnext/education/doctype/fees/fees.js b/erpnext/education/doctype/fees/fees.js
index e2c6f1d..17ef449 100644
--- a/erpnext/education/doctype/fees/fees.js
+++ b/erpnext/education/doctype/fees/fees.js
@@ -112,6 +112,8 @@
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 aa616e6..f31003b 100644
--- a/erpnext/education/doctype/fees/fees.py
+++ b/erpnext/education/doctype/fees/fees.py
@@ -75,7 +75,8 @@
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 0cbd17b..d261462 100644
--- a/erpnext/education/doctype/student/student_dashboard.py
+++ b/erpnext/education/doctype/student/student_dashboard.py
@@ -6,6 +6,9 @@
'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 @@
},
{
'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 11ad83b..0203332 100644
--- a/erpnext/hr/doctype/employee/employee_dashboard.py
+++ b/erpnext/hr/doctype/employee/employee_dashboard.py
@@ -6,6 +6,9 @@
'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 @@
},
{
'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/hr/doctype/expense_claim/expense_claim.js b/erpnext/hr/doctype/expense_claim/expense_claim.js
index 88f3865..fb23103 100644
--- a/erpnext/hr/doctype/expense_claim/expense_claim.js
+++ b/erpnext/hr/doctype/expense_claim/expense_claim.js
@@ -17,7 +17,7 @@
return;
}
return frappe.call({
- method: "erpnext.hr.doctype.expense_claim.expense_claim.get_expense_claim_account",
+ method: "erpnext.hr.doctype.expense_claim.expense_claim.get_expense_claim_account_and_cost_center",
args: {
"expense_claim_type": d.expense_type,
"company": doc.company
@@ -25,6 +25,7 @@
callback: function(r) {
if (r.message) {
d.default_account = r.message.account;
+ d.cost_center = r.message.cost_center;
}
}
});
diff --git a/erpnext/hr/doctype/expense_claim/expense_claim.py b/erpnext/hr/doctype/expense_claim/expense_claim.py
index fe8afdf..ad9d86b 100644
--- a/erpnext/hr/doctype/expense_claim/expense_claim.py
+++ b/erpnext/hr/doctype/expense_claim/expense_claim.py
@@ -2,9 +2,9 @@
# License: GNU General Public License v3. See license.txt
from __future__ import unicode_literals
-import frappe
+import frappe, erpnext
from frappe import _
-from frappe.utils import get_fullname, flt, cstr
+from frappe.utils import get_fullname, flt, cstr, get_link_to_form
from frappe.model.document import Document
from erpnext.hr.utils import set_employee_name
from erpnext.accounts.party import get_party_account
@@ -192,7 +192,8 @@
def validate_account_details(self):
for data in self.expenses:
if not data.cost_center:
- frappe.throw(_("Cost center is required to book an expense claim"))
+ frappe.throw(_("Row {0}: {1} is required in the expenses table to book an expense claim.")
+ .format(data.idx, frappe.bold("Cost Center")))
if self.is_paid:
if not self.mode_of_payment:
@@ -309,12 +310,22 @@
return je.as_dict()
@frappe.whitelist()
+def get_expense_claim_account_and_cost_center(expense_claim_type, company):
+ data = get_expense_claim_account(expense_claim_type, company)
+ cost_center = erpnext.get_default_cost_center(company)
+
+ return {
+ "account": data.get("account"),
+ "cost_center": cost_center
+ }
+
+@frappe.whitelist()
def get_expense_claim_account(expense_claim_type, company):
account = frappe.db.get_value("Expense Claim Account",
{"parent": expense_claim_type, "company": company}, "default_account")
if not account:
- frappe.throw(_("Please set default account in Expense Claim Type {0}")
- .format(expense_claim_type))
+ frappe.throw(_("Set the default account for the {0} {1}")
+ .format(frappe.bold("Expense Claim Type"), get_link_to_form("Expense Claim Type", expense_claim_type)))
return {
"account": account
diff --git a/erpnext/hr/doctype/salary_structure/salary_structure.py b/erpnext/hr/doctype/salary_structure/salary_structure.py
index df76458..5ba7f1c 100644
--- a/erpnext/hr/doctype/salary_structure/salary_structure.py
+++ b/erpnext/hr/doctype/salary_structure/salary_structure.py
@@ -149,7 +149,7 @@
return salary_structures_assignments
@frappe.whitelist()
-def make_salary_slip(source_name, target_doc = None, employee = None, as_print = False, print_format = None, for_preview=0):
+def make_salary_slip(source_name, target_doc = None, employee = None, as_print = False, print_format = None, for_preview=0, ignore_permissions=False):
def postprocess(source, target):
if employee:
employee_details = frappe.db.get_value("Employee", employee,
@@ -169,7 +169,7 @@
"name": "salary_structure"
}
}
- }, target_doc, postprocess, ignore_child_tables=True)
+ }, target_doc, postprocess, ignore_child_tables=True, ignore_permissions=ignore_permissions)
if cint(as_print):
doc.name = 'Preview for {0}'.format(employee)
diff --git a/erpnext/loan_management/doctype/loan_security/loan_security.json b/erpnext/loan_management/doctype/loan_security/loan_security.json
index e6984ee..e879b17 100644
--- a/erpnext/loan_management/doctype/loan_security/loan_security.json
+++ b/erpnext/loan_management/doctype/loan_security/loan_security.json
@@ -1,15 +1,17 @@
{
+ "actions": [],
+ "allow_rename": 1,
"autoname": "field:loan_security_name",
"creation": "2019-09-02 15:07:08.885593",
"doctype": "DocType",
"editable_grid": 1,
"engine": "InnoDB",
"field_order": [
- "loan_security_type",
- "loan_security_code",
"loan_security_name",
"unit_of_measure",
+ "loan_security_code",
"column_break_3",
+ "loan_security_type",
"haircut",
"disabled"
],
@@ -17,7 +19,9 @@
{
"fieldname": "loan_security_name",
"fieldtype": "Data",
+ "in_list_view": 1,
"label": "Loan Security Name",
+ "reqd": 1,
"unique": 1
},
{
@@ -33,8 +37,10 @@
{
"fieldname": "loan_security_type",
"fieldtype": "Link",
+ "in_list_view": 1,
"label": "Loan Security Type",
- "options": "Loan Security Type"
+ "options": "Loan Security Type",
+ "reqd": 1
},
{
"fieldname": "loan_security_code",
@@ -52,11 +58,15 @@
"fetch_from": "loan_security_type.unit_of_measure",
"fieldname": "unit_of_measure",
"fieldtype": "Link",
+ "in_list_view": 1,
"label": "Unit Of Measure",
- "options": "UOM"
+ "options": "UOM",
+ "read_only": 1,
+ "reqd": 1
}
],
- "modified": "2019-11-16 11:36:37.901656",
+ "links": [],
+ "modified": "2020-04-28 14:07:54.506896",
"modified_by": "Administrator",
"module": "Loan Management",
"name": "Loan Security",
@@ -87,7 +97,6 @@
"write": 1
}
],
- "quick_entry": 1,
"search_fields": "loan_security_code",
"sort_field": "modified",
"sort_order": "DESC",
diff --git a/erpnext/loan_management/doctype/loan_security_type/loan_security_type.json b/erpnext/loan_management/doctype/loan_security_type/loan_security_type.json
index 5f29609..f46b88c 100644
--- a/erpnext/loan_management/doctype/loan_security_type/loan_security_type.json
+++ b/erpnext/loan_management/doctype/loan_security_type/loan_security_type.json
@@ -9,9 +9,9 @@
"loan_security_type",
"unit_of_measure",
"haircut",
- "disabled",
"column_break_5",
- "loan_to_value_ratio"
+ "loan_to_value_ratio",
+ "disabled"
],
"fields": [
{
@@ -23,7 +23,9 @@
{
"fieldname": "loan_security_type",
"fieldtype": "Data",
+ "in_list_view": 1,
"label": "Loan Security Type",
+ "reqd": 1,
"unique": 1
},
{
@@ -34,8 +36,10 @@
{
"fieldname": "unit_of_measure",
"fieldtype": "Link",
+ "in_list_view": 1,
"label": "Unit Of Measure",
- "options": "UOM"
+ "options": "UOM",
+ "reqd": 1
},
{
"fieldname": "column_break_5",
@@ -48,7 +52,7 @@
}
],
"links": [],
- "modified": "2020-02-28 12:43:20.364447",
+ "modified": "2020-04-28 14:06:49.046177",
"modified_by": "Administrator",
"module": "Loan Management",
"name": "Loan Security Type",
diff --git a/erpnext/non_profit/doctype/member/member_dashboard.py b/erpnext/non_profit/doctype/member/member_dashboard.py
index 945fb7b..743db25 100644
--- a/erpnext/non_profit/doctype/member/member_dashboard.py
+++ b/erpnext/non_profit/doctype/member/member_dashboard.py
@@ -6,10 +6,17 @@
'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/controllers/transaction.js b/erpnext/public/js/controllers/transaction.js
index 5843034..c9d7728 100644
--- a/erpnext/public/js/controllers/transaction.js
+++ b/erpnext/public/js/controllers/transaction.js
@@ -175,6 +175,20 @@
};
}
+ if (this.frm.fields_dict["items"].grid.get_field('blanket_order')) {
+ this.frm.set_query("blanket_order", "items", function(doc, cdt, cdn) {
+ var item = locals[cdt][cdn];
+ return {
+ query: "erpnext.controllers.queries.get_blanket_orders",
+ filters: {
+ "company": doc.company,
+ "blanket_order_type": doc.doctype === "Sales Order" ? "Selling" : "Purchasing",
+ "item": item.item_code
+ }
+ }
+ });
+ }
+
},
onload: function() {
var me = this;
diff --git a/erpnext/public/js/utils/dimension_tree_filter.js b/erpnext/public/js/utils/dimension_tree_filter.js
index 75c5a82..b223fc5 100644
--- a/erpnext/public/js/utils/dimension_tree_filter.js
+++ b/erpnext/public/js/utils/dimension_tree_filter.js
@@ -24,7 +24,7 @@
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 @@
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);
+ });
+ }
}
}
});
@@ -76,20 +78,6 @@
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);
- frm.script_manager.copy_from_first_row("accounts", row, [dimension['fieldname']]);
- });
}
});
});
\ No newline at end of file
diff --git a/erpnext/regional/india/utils.py b/erpnext/regional/india/utils.py
index 094f010..3309858 100644
--- a/erpnext/regional/india/utils.py
+++ b/erpnext/regional/india/utils.py
@@ -288,7 +288,7 @@
})
def get_component_amt_from_salary_slip(employee, salary_structure, basic_component, hra_component):
- salary_slip = make_salary_slip(salary_structure, employee=employee, for_preview=1)
+ salary_slip = make_salary_slip(salary_structure, employee=employee, for_preview=1, ignore_permissions=True)
basic_amt, hra_amt = 0, 0
for earning in salary_slip.earnings:
if earning.salary_component == basic_component:
diff --git a/erpnext/selling/doctype/customer/customer_dashboard.py b/erpnext/selling/doctype/customer/customer_dashboard.py
index 654dd48..22e30e3 100644
--- a/erpnext/selling/doctype/customer/customer_dashboard.py
+++ b/erpnext/selling/doctype/customer/customer_dashboard.py
@@ -11,7 +11,8 @@
'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 @@
},
{
'label': _('Payments'),
- 'items': ['Payment Entry']
+ 'items': ['Payment Entry', 'Bank Account']
},
{
'label': _('Support'),
diff --git a/erpnext/selling/doctype/sales_order/sales_order.js b/erpnext/selling/doctype/sales_order/sales_order.js
index 3c1ffe9..45a43c5 100644
--- a/erpnext/selling/doctype/sales_order/sales_order.js
+++ b/erpnext/selling/doctype/sales_order/sales_order.js
@@ -65,15 +65,6 @@
}
});
- frm.set_query("blanket_order", "items", function() {
- return {
- filters: {
- "company": frm.doc.company,
- "docstatus": 1
- }
- }
- });
-
erpnext.queries.setup_warehouse_query(frm);
},
@@ -148,7 +139,7 @@
}
this.frm.add_custom_button(__('Pick List'), () => this.create_pick_list(), __('Create'));
-
+
const order_is_a_sale = ["Sales", "Shopping Cart"].indexOf(doc.order_type) !== -1;
const order_is_maintenance = ["Maintenance"].indexOf(doc.order_type) !== -1;
// order type has been customised then show all the action buttons
diff --git a/erpnext/stock/doctype/stock_entry/stock_entry.js b/erpnext/stock/doctype/stock_entry/stock_entry.js
index 496a865..e4412e0 100644
--- a/erpnext/stock/doctype/stock_entry/stock_entry.js
+++ b/erpnext/stock/doctype/stock_entry/stock_entry.js
@@ -215,9 +215,7 @@
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 bdd0bd0..704ae41 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 a848c80..c16a41c 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 28d7208..0190f09 100644
--- a/erpnext/stock/report/stock_ledger/stock_ledger.py
+++ b/erpnext/stock/report/stock_ledger/stock_ledger.py
@@ -46,19 +46,6 @@
"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 @@
{"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},