From da7494c2089e2eace2212a0d6ebb69aabbabca4a Mon Sep 17 00:00:00 2001 From: Rucha Mahabal Date: Wed, 2 Feb 2022 17:30:29 +0530 Subject: [PATCH 1/2] fix: Program Enrollment tests (#29592) --- .../doctype/program_enrollment/program_enrollment.py | 12 ++++++++++-- .../hr/doctype/employee/test_employee_reminders.py | 8 ++++---- 2 files changed, 14 insertions(+), 6 deletions(-) diff --git a/erpnext/education/doctype/program_enrollment/program_enrollment.py b/erpnext/education/doctype/program_enrollment/program_enrollment.py index a23d49267e..4d0f3a9801 100644 --- a/erpnext/education/doctype/program_enrollment/program_enrollment.py +++ b/erpnext/education/doctype/program_enrollment/program_enrollment.py @@ -6,6 +6,7 @@ import frappe 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 @@ class ProgramEnrollment(Document): 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 bdb51b008a..a4097ab9d1 100644 --- a/erpnext/hr/doctype/employee/test_employee_reminders.py +++ b/erpnext/hr/doctype/employee/test_employee_reminders.py @@ -207,8 +207,8 @@ class TestEmployeeReminders(unittest.TestCase): # 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 @@ class TestEmployeeReminders(unittest.TestCase): # 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): From e082e3f702a4bc8993411115504baa3e3ff1d996 Mon Sep 17 00:00:00 2001 From: Saqib Ansari Date: Wed, 2 Feb 2022 19:33:48 +0530 Subject: [PATCH 2/2] fix(pos): pricing rule on transactions doesn't work --- erpnext/selling/page/point_of_sale/pos_controller.js | 7 ++++++- erpnext/selling/page/point_of_sale/pos_item_cart.js | 5 +++-- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/erpnext/selling/page/point_of_sale/pos_controller.js b/erpnext/selling/page/point_of_sale/pos_controller.js index 56aa24f6ec..ea8459f970 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 @@ erpnext.PointOfSale.Controller = class { 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 @@ erpnext.PointOfSale.Controller = class { }) .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 4920584d95..4a99f068cd 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 @@ erpnext.PointOfSale.ItemCart = class { 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 @@ erpnext.PointOfSale.ItemCart = class { $(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); });