diff --git a/erpnext/public/scss/point-of-sale.scss b/erpnext/public/scss/point-of-sale.scss index a5912cd8e62..d4cc7094e55 100644 --- a/erpnext/public/scss/point-of-sale.scss +++ b/erpnext/public/scss/point-of-sale.scss @@ -286,13 +286,24 @@ grid-template-columns: repeat(2, minmax(0, 1fr)); margin-top: var(--margin-md); column-gap: var(--padding-sm); - row-gap: var(--padding-xs); + row-gap: var(--padding-sm); } - > .transactions-label { - @extend .label; + > .transactions-section { + display: flex; + justify-content: space-between; + align-items: center; margin-top: var(--margin-md); margin-bottom: var(--margin-sm); + + > .recent-transactions { + @extend .label; + } + + > .last-transaction { + font-weight: 400; + font-size: var(--text-sm); + } } } @@ -301,8 +312,8 @@ overflow-x: hidden; overflow-y: scroll; margin-right: -12px; - padding-right: 12px; margin-left: -10px; + scrollbar-width: thin; > .no-transactions-placeholder { height: 100%; @@ -623,7 +634,8 @@ background-color: var(--control-bg); } - > .invoice-name-customer { + > .invoice-name-customer, + > .invoice-name-date { display: flex; flex-direction: column; justify-content: space-around; @@ -642,7 +654,22 @@ } } - > .invoice-total-date { + > .invoice-name-date { + > .invoice-name { + font-size: var(--text-md); + display: flex; + align-items: center; + font-weight: 700; + } + + > .invoice-date { + @extend .nowrap; + font-size: var(--text-sm); + } + } + + > .invoice-total-date, + > .invoice-total-status { display: flex; flex-direction: column; font-weight: 500; @@ -664,6 +691,18 @@ font-weight: 400; } } + + > .invoice-total-status { + > .invoice-total { + margin-right: 8px; + } + + > .invoice-status { + display: flex; + align-items: center; + justify-content: right; + } + } } > .item-details-container { diff --git a/erpnext/selling/page/point_of_sale/point_of_sale.py b/erpnext/selling/page/point_of_sale/point_of_sale.py index 3edf313260f..e9f8826865b 100644 --- a/erpnext/selling/page/point_of_sale/point_of_sale.py +++ b/erpnext/selling/page/point_of_sale/point_of_sale.py @@ -501,7 +501,13 @@ def get_invoice_filters(doctype, status, name=None, customer=None): def get_customer_recent_transactions(customer): sales_invoices = frappe.db.get_list( "Sales Invoice", - filters={"customer": customer, "docstatus": 1, "is_pos": 1, "is_consolidated": 0}, + filters={ + "customer": customer, + "docstatus": 1, + "is_pos": 1, + "is_consolidated": 0, + "is_created_using_pos": 1, + }, fields=["name", "grand_total", "status", "posting_date", "posting_time", "currency"], page_length=20, ) 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 f4eeccf4e5b..40c364355a9 100644 --- a/erpnext/selling/page/point_of_sale/pos_item_cart.js +++ b/erpnext/selling/page/point_of_sale/pos_item_cart.js @@ -353,7 +353,13 @@ erpnext.PointOfSale.ItemCart = class { if (customer) { return new Promise((resolve) => { frappe.db - .get_value("Customer", customer, ["email_id", "mobile_no", "image", "loyalty_program"]) + .get_value("Customer", customer, [ + "email_id", + "customer_name", + "mobile_no", + "image", + "loyalty_program", + ]) .then(({ message }) => { const { loyalty_program } = message; // if loyalty program then fetch loyalty points too @@ -450,7 +456,7 @@ erpnext.PointOfSale.ItemCart = class { update_customer_section() { const me = this; - const { customer, email_id = "", mobile_no = "", image } = this.customer_info || {}; + const { customer, customer_name, email_id = "", mobile_no = "", image } = this.customer_info || {}; if (customer) { this.$customer_section.html( @@ -458,7 +464,7 @@ erpnext.PointOfSale.ItemCart = class {