Merge branch 'develop' into fix/supplier-portal/make-pi-btn
diff --git a/erpnext/controllers/queries.py b/erpnext/controllers/queries.py
index 4f8b5c7..8eae0a0 100644
--- a/erpnext/controllers/queries.py
+++ b/erpnext/controllers/queries.py
@@ -212,21 +212,15 @@
meta = frappe.get_meta(doctype, cached=True)
searchfields = meta.get_search_fields()
- # these are handled separately
- ignored_search_fields = ("item_name", "description")
- for ignored_field in ignored_search_fields:
- if ignored_field in searchfields:
- searchfields.remove(ignored_field)
-
columns = ""
- extra_searchfields = [
- field
- for field in searchfields
- if not field in ["name", "item_group", "description", "item_name"]
- ]
+ extra_searchfields = [field for field in searchfields if not field in ["name", "description"]]
if extra_searchfields:
- columns = ", " + ", ".join(extra_searchfields)
+ columns += ", " + ", ".join(extra_searchfields)
+
+ if "description" in searchfields:
+ columns += """, if(length(tabItem.description) > 40, \
+ concat(substr(tabItem.description, 1, 40), "..."), description) as description"""
searchfields = searchfields + [
field
@@ -266,12 +260,10 @@
if frappe.db.count(doctype, cache=True) < 50000:
# scan description only if items are less than 50000
description_cond = "or tabItem.description LIKE %(txt)s"
+
return frappe.db.sql(
"""select
- tabItem.name, tabItem.item_name, tabItem.item_group,
- if(length(tabItem.description) > 40, \
- concat(substr(tabItem.description, 1, 40), "..."), description) as description
- {columns}
+ tabItem.name {columns}
from tabItem
where tabItem.docstatus < 2
and tabItem.disabled=0
diff --git a/erpnext/controllers/subcontracting_controller.py b/erpnext/controllers/subcontracting_controller.py
index 202a880..6bc88d1 100644
--- a/erpnext/controllers/subcontracting_controller.py
+++ b/erpnext/controllers/subcontracting_controller.py
@@ -841,7 +841,7 @@
for fg_item_code in fg_item_code_list:
for rm_item in rm_items:
- if rm_item.get("main_item_code") or rm_item.get("item_code") == fg_item_code:
+ if rm_item.get("main_item_code") == fg_item_code or rm_item.get("item_code") == fg_item_code:
rm_item_code = rm_item.get("rm_item_code")
items_dict = {
diff --git a/erpnext/patches/v13_0/update_old_loans.py b/erpnext/patches/v13_0/update_old_loans.py
index a1d40b7..0bd3fcd 100644
--- a/erpnext/patches/v13_0/update_old_loans.py
+++ b/erpnext/patches/v13_0/update_old_loans.py
@@ -100,6 +100,7 @@
"mode_of_payment": loan.mode_of_payment,
"loan_account": loan.loan_account,
"payment_account": loan.payment_account,
+ "disbursement_account": loan.payment_account,
"interest_income_account": loan.interest_income_account,
"penalty_income_account": loan.penalty_income_account,
},
@@ -190,6 +191,7 @@
loan_type_doc.company = loan.company
loan_type_doc.mode_of_payment = loan.mode_of_payment
loan_type_doc.payment_account = loan.payment_account
+ loan_type_doc.disbursement_account = loan.payment_account
loan_type_doc.loan_account = loan.loan_account
loan_type_doc.interest_income_account = loan.interest_income_account
loan_type_doc.penalty_income_account = penalty_account
diff --git a/erpnext/stock/doctype/item/test_item.py b/erpnext/stock/doctype/item/test_item.py
index 1cee553..e35c8bf 100644
--- a/erpnext/stock/doctype/item/test_item.py
+++ b/erpnext/stock/doctype/item/test_item.py
@@ -5,6 +5,7 @@
import json
import frappe
+from frappe.custom.doctype.property_setter.property_setter import make_property_setter
from frappe.test_runner import make_test_objects
from frappe.tests.utils import FrappeTestCase, change_settings
from frappe.utils import add_days, today
@@ -816,6 +817,30 @@
item.reload()
self.assertEqual(item.is_stock_item, 1)
+ def test_serach_fields_for_item(self):
+ from erpnext.controllers.queries import item_query
+
+ make_property_setter("Item", None, "search_fields", "item_name", "Data", for_doctype="Doctype")
+
+ item = make_item(properties={"item_name": "Test Item", "description": "Test Description"})
+ data = item_query(
+ "Item", "Test Item", "", 0, 20, filters={"item_name": "Test Item"}, as_dict=True
+ )
+ self.assertEqual(data[0].name, item.name)
+ self.assertEqual(data[0].item_name, item.item_name)
+ self.assertTrue("description" not in data[0])
+
+ make_property_setter(
+ "Item", None, "search_fields", "item_name, description", "Data", for_doctype="Doctype"
+ )
+ data = item_query(
+ "Item", "Test Item", "", 0, 20, filters={"item_name": "Test Item"}, as_dict=True
+ )
+ self.assertEqual(data[0].name, item.name)
+ self.assertEqual(data[0].item_name, item.item_name)
+ self.assertEqual(data[0].description, item.description)
+ self.assertTrue("description" in data[0])
+
def set_item_variant_settings(fields):
doc = frappe.get_doc("Item Variant Settings")
diff --git a/erpnext/www/book_appointment/index.html b/erpnext/www/book_appointment/index.html
index 207175f..ad964d9 100644
--- a/erpnext/www/book_appointment/index.html
+++ b/erpnext/www/book_appointment/index.html
@@ -12,8 +12,8 @@
<!-- title: Book an appointment -->
<div id="select-date-time">
<div class="text-center mt-5">
- <h3>Book an appointment</h3>
- <p class="lead text-muted" id="lead-text">Select the date and your timezone</p>
+ <h3>{{ _("Book an appointment") }}</h3>
+ <p class="lead text-muted" id="lead-text">{{ _("Select the date and your timezone") }}</p>
</div>
<div class="row justify-content-center mt-3">
<div class="col-md-6 align-self-center ">
@@ -31,7 +31,7 @@
</div>
<div class="row justify-content-center mt-3">
<div class="col-md-4 mb-3">
- <button class="btn btn-primary form-control" id="next-button">Next</button>
+ <button class="btn btn-primary form-control" id="next-button">{{ _("Next") }}</button>
</div>
</div>
</div>
@@ -39,24 +39,24 @@
<!--Enter Details-->
<div id="enter-details" class="mb-5">
<div class="text-center mt-5">
- <h3>Add details</h3>
- <p class="lead text-muted">Selected date is <span class="date-span"></span> at <span class="time-span">
+ <h3>{{ _("Add details") }}</h3>
+ <p class="lead text-muted">{{ _("Selected date is") }} <span class="date-span"></span> {{ _("at") }} <span class="time-span">
</span></p>
</div>
<div class="row justify-content-center mt-3">
<div class="col-md-4 align-items-center">
<form id="customer-form" action='#'>
- <input class="form-control mt-3" type="text" name="customer_name" id="customer_name" placeholder="Your Name (required)" required>
+ <input class="form-control mt-3" type="text" name="customer_name" id="customer_name" placeholder="{{ _('Your Name (required)') }}" required>
<input class="form-control mt-3" type="tel" name="customer_number" id="customer_number" placeholder="+910000000000">
<input class="form-control mt-3" type="text" name="customer_skype" id="customer_skype" placeholder="Skype">
- <input class="form-control mt-3"type="email" name="customer_email" id="customer_email" placeholder="Email Address (required)" required>
+ <input class="form-control mt-3"type="email" name="customer_email" id="customer_email" placeholder="{{ _('Email Address (required)') }}" required>
<textarea class="form-control mt-3" name="customer_notes" id="customer_notes" cols="30" rows="10"
- placeholder="Notes"></textarea>
+ placeholder="{{ _('Notes') }}"></textarea>
</form>
<div class="row mt-3 " id="submit-button-area">
- <div class="col-md mt-3" style="grid-area: back;"><button class="btn btn-dark form-control" onclick="initialise_select_date()">Go back</button></div>
- <div class="col-md mt-3" style="grid-area: submit;"><button class="btn btn-primary form-control " onclick="submit()" id="submit-button">Submit</button></div>
+ <div class="col-md mt-3" style="grid-area: back;"><button class="btn btn-dark form-control" onclick="initialise_select_date()">{{ _("Go back") }}</button></div>
+ <div class="col-md mt-3" style="grid-area: submit;"><button class="btn btn-primary form-control " onclick="submit()" id="submit-button">{{ _("Submit") }}</button></div>
</div>
</div>
</div>
diff --git a/erpnext/www/book_appointment/index.js b/erpnext/www/book_appointment/index.js
index 5562cbd..46ac155 100644
--- a/erpnext/www/book_appointment/index.js
+++ b/erpnext/www/book_appointment/index.js
@@ -69,7 +69,7 @@
window.selected_timezone = timezone.value;
update_time_slots(date_picker.value, timezone.value);
let lead_text = document.getElementById('lead-text');
- lead_text.innerHTML = "Select Time"
+ lead_text.innerHTML = __("Select Time")
}
async function get_time_slots(date, timezone) {
@@ -89,7 +89,7 @@
clear_time_slots();
if (window.slots.length <= 0) {
let message_div = document.createElement('p');
- message_div.innerHTML = "There are no slots available on this date";
+ message_div.innerHTML = __("There are no slots available on this date");
timeslot_container.appendChild(message_div);
return
}
@@ -128,7 +128,7 @@
let start_time_string = moment(time).tz(timezone).format("LT");
let end_time = moment(time).tz(timezone).add(window.appointment_settings.appointment_duration, 'minutes');
let end_time_string = end_time.format("LT");
- return `<span style="font-size: 1.2em;">${start_time_string}</span><br><span class="text-muted small">to ${end_time_string}</span>`;
+ return `<span style="font-size: 1.2em;">${start_time_string}</span><br><span class="text-muted small">${__("to") } ${end_time_string}</span>`;
}
function select_time() {
@@ -227,9 +227,9 @@
},
callback: (response)=>{
if (response.message.status == "Unverified") {
- frappe.show_alert("Please check your email to confirm the appointment")
+ frappe.show_alert(__("Please check your email to confirm the appointment"))
} else {
- frappe.show_alert("Appointment Created Successfully");
+ frappe.show_alert(__("Appointment Created Successfully"));
}
setTimeout(()=>{
let redirect_url = "/";
@@ -239,7 +239,7 @@
window.location.href = redirect_url;},5000)
},
error: (err)=>{
- frappe.show_alert("Something went wrong please try again");
+ frappe.show_alert(__("Something went wrong please try again"));
button.disabled = false;
}
});
diff --git a/erpnext/www/book_appointment/verify/index.html b/erpnext/www/book_appointment/verify/index.html
index 9bcd3d2..58c07e8 100644
--- a/erpnext/www/book_appointment/verify/index.html
+++ b/erpnext/www/book_appointment/verify/index.html
@@ -8,11 +8,11 @@
{% if success==True %}
<div class="alert alert-success">
- Your email has been verified and your appointment has been scheduled
+ {{ _("Your email has been verified and your appointment has been scheduled") }}
</div>
{% else %}
<div class="alert alert-danger">
- Verification failed please check the link
+ {{ _("Verification failed please check the link") }}
</div>
{% endif %}
{% endblock%}