From 2788739c1e6822cdfc6b4bb7f8d610d1b4001a9c Mon Sep 17 00:00:00 2001 From: Diptanil Saha Date: Tue, 7 Jan 2025 17:35:01 +0530 Subject: [PATCH] feat: pos configuration for print receipt on complete order (#45024) --- .../doctype/pos_profile/pos_profile.json | 23 ++++++++++++------- .../doctype/pos_profile/pos_profile.py | 1 + .../point_of_sale/pos_past_order_summary.js | 17 +++++++++++++- 3 files changed, 32 insertions(+), 9 deletions(-) diff --git a/erpnext/accounts/doctype/pos_profile/pos_profile.json b/erpnext/accounts/doctype/pos_profile/pos_profile.json index b8a0460ee81..be7b4534216 100644 --- a/erpnext/accounts/doctype/pos_profile/pos_profile.json +++ b/erpnext/accounts/doctype/pos_profile/pos_profile.json @@ -25,6 +25,7 @@ "hide_unavailable_items", "auto_add_item_to_cart", "validate_stock_on_save", + "print_receipt_on_order_complete", "column_break_16", "update_stock", "ignore_pricing_rule", @@ -374,24 +375,30 @@ }, { "fieldname": "utm_campaign", - "print_hide": 1, "fieldtype": "Link", "label": "Campaign", - "options": "UTM Campaign" + "options": "UTM Campaign", + "print_hide": 1 }, { "fieldname": "utm_source", - "print_hide": 1, "fieldtype": "Link", "label": "Source", - "options": "UTM Source" + "options": "UTM Source", + "print_hide": 1 }, { "fieldname": "utm_medium", - "print_hide": 1, "fieldtype": "Link", "label": "Medium", - "options": "UTM Campaign" + "options": "UTM Campaign", + "print_hide": 1 + }, + { + "default": "0", + "fieldname": "print_receipt_on_order_complete", + "fieldtype": "Check", + "label": "Print Receipt on Order Complete" } ], "icon": "icon-cog", @@ -419,7 +426,7 @@ "link_fieldname": "pos_profile" } ], - "modified": "2024-06-28 10:51:48.543766", + "modified": "2025-01-01 11:07:03.161950", "modified_by": "Administrator", "module": "Accounts", "name": "POS Profile", @@ -448,4 +455,4 @@ "sort_field": "creation", "sort_order": "DESC", "states": [] -} +} \ No newline at end of file diff --git a/erpnext/accounts/doctype/pos_profile/pos_profile.py b/erpnext/accounts/doctype/pos_profile/pos_profile.py index ad06cdbb8bc..61074bc0789 100644 --- a/erpnext/accounts/doctype/pos_profile/pos_profile.py +++ b/erpnext/accounts/doctype/pos_profile/pos_profile.py @@ -46,6 +46,7 @@ class POSProfile(Document): letter_head: DF.Link | None payments: DF.Table[POSPaymentMethod] print_format: DF.Link | None + print_receipt_on_order_complete: DF.Check select_print_heading: DF.Link | None selling_price_list: DF.Link | None tax_category: DF.Link | None diff --git a/erpnext/selling/page/point_of_sale/pos_past_order_summary.js b/erpnext/selling/page/point_of_sale/pos_past_order_summary.js index ed6e6e02dcc..df44fdb04e8 100644 --- a/erpnext/selling/page/point_of_sale/pos_past_order_summary.js +++ b/erpnext/selling/page/point_of_sale/pos_past_order_summary.js @@ -1,7 +1,8 @@ erpnext.PointOfSale.PastOrderSummary = class { - constructor({ wrapper, events }) { + constructor({ wrapper, events, pos_profile }) { this.wrapper = wrapper; this.events = events; + this.pos_profile = pos_profile; this.init_component(); } @@ -355,6 +356,8 @@ erpnext.PointOfSale.PastOrderSummary = class { const condition_btns_map = this.get_condition_btn_map(after_submission); this.add_summary_btns(condition_btns_map); + + this.print_receipt_on_order_complete(); } attach_document_info(doc) { @@ -421,4 +424,16 @@ erpnext.PointOfSale.PastOrderSummary = class { toggle_component(show) { show ? this.$component.css("display", "flex") : this.$component.css("display", "none"); } + + async print_receipt_on_order_complete() { + const res = await frappe.db.get_value( + "POS Profile", + this.pos_profile, + "print_receipt_on_order_complete" + ); + + if (res.message.print_receipt_on_order_complete) { + this.print_receipt(); + } + } };