Merge branch 'develop' into e-commerce-refactor-develop
diff --git a/erpnext/education/doctype/program_enrollment/program_enrollment.py b/erpnext/education/doctype/program_enrollment/program_enrollment.py
index a23d492..4d0f3a9 100644
--- a/erpnext/education/doctype/program_enrollment/program_enrollment.py
+++ b/erpnext/education/doctype/program_enrollment/program_enrollment.py
@@ -6,6 +6,7 @@
from frappe import _, msgprint
from frappe.desk.reportview import get_match_cond
from frappe.model.document import Document
+from frappe.query_builder.functions import Min
from frappe.utils import comma_and, get_link_to_form, getdate
@@ -60,8 +61,15 @@
frappe.throw(_("Student is already enrolled."))
def update_student_joining_date(self):
- date = frappe.db.sql("select min(enrollment_date) from `tabProgram Enrollment` where student= %s", self.student)
- frappe.db.set_value("Student", self.student, "joining_date", date)
+ table = frappe.qb.DocType('Program Enrollment')
+ date = (
+ frappe.qb.from_(table)
+ .select(Min(table.enrollment_date).as_('enrollment_date'))
+ .where(table.student == self.student)
+ ).run(as_dict=True)
+
+ if date:
+ frappe.db.set_value("Student", self.student, "joining_date", date[0].enrollment_date)
def make_fee_records(self):
from erpnext.education.api import get_fee_components
diff --git a/erpnext/hr/doctype/employee/test_employee_reminders.py b/erpnext/hr/doctype/employee/test_employee_reminders.py
index bdb51b0..a4097ab 100644
--- a/erpnext/hr/doctype/employee/test_employee_reminders.py
+++ b/erpnext/hr/doctype/employee/test_employee_reminders.py
@@ -207,8 +207,8 @@
# teardown: enable emp 2
frappe.db.set_value('Employee', self.test_employee_2.name, {
- 'status': 'Left',
- 'holiday_list': self.holiday_list_2
+ 'status': 'Active',
+ 'holiday_list': self.holiday_list_2.name
})
def test_advance_holiday_reminders_weekly(self):
@@ -232,8 +232,8 @@
# teardown: enable emp 2
frappe.db.set_value('Employee', self.test_employee_2.name, {
- 'status': 'Left',
- 'holiday_list': self.holiday_list_2
+ 'status': 'Active',
+ 'holiday_list': self.holiday_list_2.name
})
def test_reminder_not_sent_if_no_holdays(self):
diff --git a/erpnext/selling/page/point_of_sale/pos_controller.js b/erpnext/selling/page/point_of_sale/pos_controller.js
index 56aa24f..ea8459f 100644
--- a/erpnext/selling/page/point_of_sale/pos_controller.js
+++ b/erpnext/selling/page/point_of_sale/pos_controller.js
@@ -248,7 +248,7 @@
numpad_event: (value, action) => this.update_item_field(value, action),
- checkout: () => this.payment.checkout(),
+ checkout: () => this.save_and_checkout(),
edit_cart: () => this.payment.edit_cart(),
@@ -713,4 +713,9 @@
})
.catch(e => console.log(e));
}
+
+ async save_and_checkout() {
+ this.frm.is_dirty() && await this.frm.save();
+ this.payment.checkout();
+ }
};
diff --git a/erpnext/selling/page/point_of_sale/pos_item_cart.js b/erpnext/selling/page/point_of_sale/pos_item_cart.js
index 4920584..4a99f06 100644
--- a/erpnext/selling/page/point_of_sale/pos_item_cart.js
+++ b/erpnext/selling/page/point_of_sale/pos_item_cart.js
@@ -191,10 +191,10 @@
this.numpad_value = '';
});
- this.$component.on('click', '.checkout-btn', function() {
+ this.$component.on('click', '.checkout-btn', async function() {
if ($(this).attr('style').indexOf('--blue-500') == -1) return;
- me.events.checkout();
+ await me.events.checkout();
me.toggle_checkout_btn(false);
me.allow_discount_change && me.$add_discount_elem.removeClass("d-none");
@@ -985,6 +985,7 @@
$(frm.wrapper).off('refresh-fields');
$(frm.wrapper).on('refresh-fields', () => {
if (frm.doc.items.length) {
+ this.$cart_items_wrapper.html('');
frm.doc.items.forEach(item => {
this.update_item_html(item);
});