diff --git a/erpnext/accounts/doctype/journal_entry/journal_entry.js b/erpnext/accounts/doctype/journal_entry/journal_entry.js
index 7af41f3..763e2e6 100644
--- a/erpnext/accounts/doctype/journal_entry/journal_entry.js
+++ b/erpnext/accounts/doctype/journal_entry/journal_entry.js
@@ -173,8 +173,8 @@
 var update_jv_details = function(doc, r) {
 	$.each(r, function(i, d) {
 		var row = frappe.model.add_child(doc, "Journal Entry Account", "accounts");
-		row.account = d.account;
-		row.balance = d.balance;
+		frappe.model.set_value(row.doctype, row.name, "account", d.account)
+		frappe.model.set_value(row.doctype, row.name, "balance", d.balance)
 	});
 	refresh_field("accounts");
 }
diff --git a/erpnext/accounts/doctype/payment_request/payment_request.json b/erpnext/accounts/doctype/payment_request/payment_request.json
index 2ee356a..2f3516e 100644
--- a/erpnext/accounts/doctype/payment_request/payment_request.json
+++ b/erpnext/accounts/doctype/payment_request/payment_request.json
@@ -186,8 +186,10 @@
   {
    "fetch_from": "bank_account.bank",
    "fieldname": "bank",
-   "fieldtype": "Read Only",
-   "label": "Bank"
+   "fieldtype": "Link",
+   "label": "Bank",
+   "options": "Bank",
+   "read_only": 1
   },
   {
    "fetch_from": "bank_account.bank_account_no",
@@ -366,10 +368,11 @@
  "index_web_pages_for_search": 1,
  "is_submittable": 1,
  "links": [],
- "modified": "2020-09-18 12:24:14.178853",
+ "modified": "2022-09-30 16:19:43.680025",
  "modified_by": "Administrator",
  "module": "Accounts",
  "name": "Payment Request",
+ "naming_rule": "By \"Naming Series\" field",
  "owner": "Administrator",
  "permissions": [
   {
@@ -401,5 +404,6 @@
   }
  ],
  "sort_field": "modified",
- "sort_order": "DESC"
+ "sort_order": "DESC",
+ "states": []
 }
\ No newline at end of file
diff --git a/erpnext/accounts/doctype/pos_invoice/pos_invoice.json b/erpnext/accounts/doctype/pos_invoice/pos_invoice.json
index 6f8b382..eedaaaf 100644
--- a/erpnext/accounts/doctype/pos_invoice/pos_invoice.json
+++ b/erpnext/accounts/doctype/pos_invoice/pos_invoice.json
@@ -343,7 +343,8 @@
    "no_copy": 1,
    "options": "POS Invoice",
    "print_hide": 1,
-   "read_only": 1
+   "read_only": 1,
+   "search_index": 1
   },
   {
    "default": "0",
@@ -1553,7 +1554,7 @@
  "icon": "fa fa-file-text",
  "is_submittable": 1,
  "links": [],
- "modified": "2022-09-27 13:00:24.166684",
+ "modified": "2022-09-30 03:49:50.455199",
  "modified_by": "Administrator",
  "module": "Accounts",
  "name": "POS Invoice",
diff --git a/erpnext/accounts/doctype/pos_invoice/pos_invoice.py b/erpnext/accounts/doctype/pos_invoice/pos_invoice.py
index fbe0ef3..54a3e93 100644
--- a/erpnext/accounts/doctype/pos_invoice/pos_invoice.py
+++ b/erpnext/accounts/doctype/pos_invoice/pos_invoice.py
@@ -743,7 +743,3 @@
 		]:
 			payment_mode = get_mode_of_payment_info(mode_of_payment, doc.company)
 			append_payment(payment_mode[0])
-
-
-def on_doctype_update():
-	frappe.db.add_index("POS Invoice", ["return_against"])
diff --git a/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.json b/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.json
index 3020e6d..1e47777 100644
--- a/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.json
+++ b/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.json
@@ -1430,6 +1430,7 @@
    "fieldname": "tax_withheld_vouchers",
    "fieldtype": "Table",
    "label": "Tax Withheld Vouchers",
+   "no_copy": 1,
    "options": "Tax Withheld Vouchers",
    "read_only": 1
   }
@@ -1438,7 +1439,7 @@
  "idx": 204,
  "is_submittable": 1,
  "links": [],
- "modified": "2022-09-27 11:07:55.766844",
+ "modified": "2022-10-07 14:19:14.214157",
  "modified_by": "Administrator",
  "module": "Accounts",
  "name": "Purchase Invoice",
diff --git a/erpnext/accounts/doctype/sales_invoice/test_sales_invoice.py b/erpnext/accounts/doctype/sales_invoice/test_sales_invoice.py
index 782e08e..ce44ae3 100644
--- a/erpnext/accounts/doctype/sales_invoice/test_sales_invoice.py
+++ b/erpnext/accounts/doctype/sales_invoice/test_sales_invoice.py
@@ -8,7 +8,7 @@
 from frappe.model.dynamic_links import get_dynamic_link_map
 from frappe.model.naming import make_autoname
 from frappe.tests.utils import change_settings
-from frappe.utils import add_days, flt, getdate, nowdate
+from frappe.utils import add_days, flt, getdate, nowdate, today
 
 import erpnext
 from erpnext.accounts.doctype.account.test_account import create_account, get_inventory_account
@@ -3196,6 +3196,37 @@
 			"Accounts Settings", "Accounts Settings", "unlink_payment_on_cancel_of_invoice", unlink_enabled
 		)
 
+	def test_batch_expiry_for_sales_invoice_return(self):
+		from erpnext.controllers.sales_and_purchase_return import make_return_doc
+		from erpnext.stock.doctype.item.test_item import make_item
+
+		item = make_item(
+			"_Test Batch Item For Return Check",
+			{
+				"is_purchase_item": 1,
+				"is_stock_item": 1,
+				"has_batch_no": 1,
+				"create_new_batch": 1,
+				"batch_number_series": "TBIRC.#####",
+			},
+		)
+
+		pr = make_purchase_receipt(qty=1, item_code=item.name)
+
+		batch_no = pr.items[0].batch_no
+		si = create_sales_invoice(qty=1, item_code=item.name, update_stock=1, batch_no=batch_no)
+
+		si.load_from_db()
+		batch_no = si.items[0].batch_no
+		self.assertTrue(batch_no)
+
+		frappe.db.set_value("Batch", batch_no, "expiry_date", add_days(today(), -1))
+
+		return_si = make_return_doc(si.doctype, si.name)
+		return_si.save().submit()
+
+		self.assertTrue(return_si.docstatus == 1)
+
 
 def get_sales_invoice_for_e_invoice():
 	si = make_sales_invoice_for_ewaybill()
@@ -3289,6 +3320,7 @@
 			"serial_no": args.serial_no,
 			"conversion_factor": 1,
 			"incoming_rate": args.incoming_rate or 0,
+			"batch_no": args.batch_no or None,
 		},
 	)
 
diff --git a/erpnext/accounts/doctype/tax_withholding_category/tax_withholding_category.py b/erpnext/accounts/doctype/tax_withholding_category/tax_withholding_category.py
index 84c2c9a..7eddd81 100644
--- a/erpnext/accounts/doctype/tax_withholding_category/tax_withholding_category.py
+++ b/erpnext/accounts/doctype/tax_withholding_category/tax_withholding_category.py
@@ -249,6 +249,9 @@
 				)
 			else:
 				tax_amount = net_total * tax_details.rate / 100 if net_total > 0 else 0
+
+			# once tds is deducted, not need to add vouchers in the invoice
+			voucher_wise_amount = {}
 		else:
 			tax_amount = get_tds_amount(ldc, parties, inv, tax_details, tax_deducted, vouchers)
 
@@ -425,7 +428,10 @@
 		):
 			# Get net total again as TDS is calculated on net total
 			# Grand is used to just check for threshold breach
-			net_total = frappe.db.get_value("Purchase Invoice", invoice_filters, "sum(net_total)") or 0.0
+			net_total = 0
+			if vouchers:
+				net_total = frappe.db.get_value("Purchase Invoice", invoice_filters, "sum(net_total)")
+
 			net_total += inv.net_total
 			supp_credit_amt = net_total - cumulative_threshold
 
diff --git a/erpnext/e_commerce/doctype/website_item/website_item.json b/erpnext/e_commerce/doctype/website_item/website_item.json
index c5775ee..6556eab 100644
--- a/erpnext/e_commerce/doctype/website_item/website_item.json
+++ b/erpnext/e_commerce/doctype/website_item/website_item.json
@@ -188,7 +188,8 @@
    "in_list_view": 1,
    "label": "Item Group",
    "options": "Item Group",
-   "read_only": 1
+   "read_only": 1,
+   "search_index": 1
   },
   {
    "default": "1",
@@ -234,7 +235,8 @@
    "fieldname": "brand",
    "fieldtype": "Link",
    "label": "Brand",
-   "options": "Brand"
+   "options": "Brand",
+   "search_index": 1
   },
   {
    "collapsible": 1,
@@ -346,7 +348,7 @@
  "index_web_pages_for_search": 1,
  "links": [],
  "make_attachments_public": 1,
- "modified": "2022-09-13 04:05:11.614087",
+ "modified": "2022-09-30 04:01:52.090732",
  "modified_by": "Administrator",
  "module": "E-commerce",
  "name": "Website Item",
diff --git a/erpnext/e_commerce/doctype/website_item/website_item.py b/erpnext/e_commerce/doctype/website_item/website_item.py
index c0f8c79..3e5d5f7 100644
--- a/erpnext/e_commerce/doctype/website_item/website_item.py
+++ b/erpnext/e_commerce/doctype/website_item/website_item.py
@@ -403,9 +403,6 @@
 	# since route is a Text column, it needs a length for indexing
 	frappe.db.add_index("Website Item", ["route(500)"])
 
-	frappe.db.add_index("Website Item", ["item_group"])
-	frappe.db.add_index("Website Item", ["brand"])
-
 
 def check_if_user_is_customer(user=None):
 	from frappe.contacts.doctype.contact.contact import get_contact_name
diff --git a/erpnext/manufacturing/doctype/work_order/test_work_order.py b/erpnext/manufacturing/doctype/work_order/test_work_order.py
index a53c42c..804f03d 100644
--- a/erpnext/manufacturing/doctype/work_order/test_work_order.py
+++ b/erpnext/manufacturing/doctype/work_order/test_work_order.py
@@ -17,6 +17,7 @@
 	close_work_order,
 	make_job_card,
 	make_stock_entry,
+	make_stock_return_entry,
 	stop_unstop,
 )
 from erpnext.selling.doctype.sales_order.test_sales_order import make_sales_order
@@ -1408,6 +1409,77 @@
 		)
 		self.assertEqual(manufacture_ste_doc2.items[1].qty, 1)
 
+	def test_non_consumed_material_return_against_work_order(self):
+		frappe.db.set_value(
+			"Manufacturing Settings",
+			None,
+			"backflush_raw_materials_based_on",
+			"Material Transferred for Manufacture",
+		)
+
+		item = make_item(
+			"Test FG Item To Test Return Case",
+			{
+				"is_stock_item": 1,
+			},
+		)
+
+		item_code = item.name
+		bom_doc = make_bom(
+			item=item_code,
+			source_warehouse="Stores - _TC",
+			raw_materials=["Test Batch MCC Keyboard", "Test Serial No BTT Headphone"],
+		)
+
+		# Create a work order
+		wo_doc = make_wo_order_test_record(production_item=item_code, qty=5)
+		wo_doc.save()
+
+		self.assertEqual(wo_doc.bom_no, bom_doc.name)
+
+		# Transfer material for manufacture
+		ste_doc = frappe.get_doc(make_stock_entry(wo_doc.name, "Material Transfer for Manufacture", 5))
+		for row in ste_doc.items:
+			row.qty += 2
+			row.transfer_qty += 2
+			nste_doc = test_stock_entry.make_stock_entry(
+				item_code=row.item_code, target="Stores - _TC", qty=row.qty, basic_rate=100
+			)
+
+			row.batch_no = nste_doc.items[0].batch_no
+			row.serial_no = nste_doc.items[0].serial_no
+
+		ste_doc.save()
+		ste_doc.submit()
+		ste_doc.load_from_db()
+
+		# Create a stock entry to manufacture the item
+		ste_doc = frappe.get_doc(make_stock_entry(wo_doc.name, "Manufacture", 5))
+		for row in ste_doc.items:
+			if row.s_warehouse and not row.t_warehouse:
+				row.qty -= 2
+				row.transfer_qty -= 2
+
+				if row.serial_no:
+					serial_nos = get_serial_nos(row.serial_no)
+					row.serial_no = "\n".join(serial_nos[0:5])
+
+		ste_doc.save()
+		ste_doc.submit()
+
+		wo_doc.load_from_db()
+		for row in wo_doc.required_items:
+			self.assertEqual(row.transferred_qty, 7)
+			self.assertEqual(row.consumed_qty, 5)
+
+		self.assertEqual(wo_doc.status, "Completed")
+		return_ste_doc = make_stock_return_entry(wo_doc.name)
+		return_ste_doc.save()
+
+		self.assertTrue(return_ste_doc.is_return)
+		for row in return_ste_doc.items:
+			self.assertEqual(row.qty, 2)
+
 
 def prepare_data_for_backflush_based_on_materials_transferred():
 	batch_item_doc = make_item(
diff --git a/erpnext/manufacturing/doctype/work_order/work_order.js b/erpnext/manufacturing/doctype/work_order/work_order.js
index f3640b9..4aab3fa 100644
--- a/erpnext/manufacturing/doctype/work_order/work_order.js
+++ b/erpnext/manufacturing/doctype/work_order/work_order.js
@@ -180,6 +180,37 @@
 				frm.trigger("make_bom");
 			});
 		}
+
+		frm.trigger("add_custom_button_to_return_components");
+	},
+
+	add_custom_button_to_return_components: function(frm) {
+		if (frm.doc.docstatus === 1 && in_list(["Closed", "Completed"], frm.doc.status)) {
+			let non_consumed_items = frm.doc.required_items.filter(d =>{
+				return flt(d.consumed_qty) < flt(d.transferred_qty - d.returned_qty)
+			});
+
+			if (non_consumed_items && non_consumed_items.length) {
+				frm.add_custom_button(__("Return Components"), function() {
+					frm.trigger("create_stock_return_entry");
+				}).addClass("btn-primary");
+			}
+		}
+	},
+
+	create_stock_return_entry: function(frm) {
+		frappe.call({
+			method: "erpnext.manufacturing.doctype.work_order.work_order.make_stock_return_entry",
+			args: {
+				"work_order": frm.doc.name,
+			},
+			callback: function(r) {
+				if(!r.exc) {
+					let doc = frappe.model.sync(r.message);
+					frappe.set_route("Form", doc[0].doctype, doc[0].name);
+				}
+			}
+		});
 	},
 
 	make_job_card: function(frm) {
@@ -517,7 +548,8 @@
 erpnext.work_order = {
 	set_custom_buttons: function(frm) {
 		var doc = frm.doc;
-		if (doc.docstatus === 1 && doc.status != "Closed") {
+
+		if (doc.status !== "Closed") {
 			frm.add_custom_button(__('Close'), function() {
 				frappe.confirm(__("Once the Work Order is Closed. It can't be resumed."),
 					() => {
@@ -525,7 +557,9 @@
 					}
 				);
 			}, __("Status"));
+		}
 
+		if (doc.docstatus === 1 && !in_list(["Closed", "Completed"], doc.status)) {
 			if (doc.status != 'Stopped' && doc.status != 'Completed') {
 				frm.add_custom_button(__('Stop'), function() {
 					erpnext.work_order.change_work_order_status(frm, "Stopped");
diff --git a/erpnext/manufacturing/doctype/work_order/work_order.py b/erpnext/manufacturing/doctype/work_order/work_order.py
index 7b86253..1e6d982 100644
--- a/erpnext/manufacturing/doctype/work_order/work_order.py
+++ b/erpnext/manufacturing/doctype/work_order/work_order.py
@@ -20,6 +20,7 @@
 	nowdate,
 	time_diff_in_hours,
 )
+from pypika import functions as fn
 
 from erpnext.manufacturing.doctype.bom.bom import (
 	get_bom_item_rate,
@@ -859,6 +860,7 @@
 		if self.docstatus == 1:
 			# calculate transferred qty based on submitted stock entries
 			self.update_transferred_qty_for_required_items()
+			self.update_returned_qty()
 
 			# update in bin
 			self.update_reserved_qty_for_production()
@@ -930,23 +932,62 @@
 			self.set_available_qty()
 
 	def update_transferred_qty_for_required_items(self):
-		"""update transferred qty from submitted stock entries for that item against
-		the work order"""
+		ste = frappe.qb.DocType("Stock Entry")
+		ste_child = frappe.qb.DocType("Stock Entry Detail")
 
-		for d in self.required_items:
-			transferred_qty = frappe.db.sql(
-				"""select sum(qty)
-				from `tabStock Entry` entry, `tabStock Entry Detail` detail
-				where
-					entry.work_order = %(name)s
-					and entry.purpose = 'Material Transfer for Manufacture'
-					and entry.docstatus = 1
-					and detail.parent = entry.name
-					and (detail.item_code = %(item)s or detail.original_item = %(item)s)""",
-				{"name": self.name, "item": d.item_code},
-			)[0][0]
+		query = (
+			frappe.qb.from_(ste)
+			.inner_join(ste_child)
+			.on((ste_child.parent == ste.name))
+			.select(
+				ste_child.item_code,
+				ste_child.original_item,
+				fn.Sum(ste_child.qty).as_("qty"),
+			)
+			.where(
+				(ste.docstatus == 1)
+				& (ste.work_order == self.name)
+				& (ste.purpose == "Material Transfer for Manufacture")
+				& (ste.is_return == 0)
+			)
+			.groupby(ste_child.item_code)
+		)
 
-			d.db_set("transferred_qty", flt(transferred_qty), update_modified=False)
+		data = query.run(as_dict=1) or []
+		transferred_items = frappe._dict({d.original_item or d.item_code: d.qty for d in data})
+
+		for row in self.required_items:
+			row.db_set(
+				"transferred_qty", (transferred_items.get(row.item_code) or 0.0), update_modified=False
+			)
+
+	def update_returned_qty(self):
+		ste = frappe.qb.DocType("Stock Entry")
+		ste_child = frappe.qb.DocType("Stock Entry Detail")
+
+		query = (
+			frappe.qb.from_(ste)
+			.inner_join(ste_child)
+			.on((ste_child.parent == ste.name))
+			.select(
+				ste_child.item_code,
+				ste_child.original_item,
+				fn.Sum(ste_child.qty).as_("qty"),
+			)
+			.where(
+				(ste.docstatus == 1)
+				& (ste.work_order == self.name)
+				& (ste.purpose == "Material Transfer for Manufacture")
+				& (ste.is_return == 1)
+			)
+			.groupby(ste_child.item_code)
+		)
+
+		data = query.run(as_dict=1) or []
+		returned_dict = frappe._dict({d.original_item or d.item_code: d.qty for d in data})
+
+		for row in self.required_items:
+			row.db_set("returned_qty", (returned_dict.get(row.item_code) or 0.0), update_modified=False)
 
 	def update_consumed_qty_for_required_items(self):
 		"""
@@ -1470,3 +1511,25 @@
 			)
 		)
 	).run()[0][0] or 0.0
+
+
+@frappe.whitelist()
+def make_stock_return_entry(work_order):
+	from erpnext.stock.doctype.stock_entry.stock_entry import get_available_materials
+
+	non_consumed_items = get_available_materials(work_order)
+	if not non_consumed_items:
+		return
+
+	wo_doc = frappe.get_cached_doc("Work Order", work_order)
+
+	stock_entry = frappe.new_doc("Stock Entry")
+	stock_entry.from_bom = 1
+	stock_entry.is_return = 1
+	stock_entry.work_order = work_order
+	stock_entry.purpose = "Material Transfer for Manufacture"
+	stock_entry.bom_no = wo_doc.bom_no
+	stock_entry.add_transfered_raw_materials_in_items()
+	stock_entry.set_stock_entry_type()
+
+	return stock_entry
diff --git a/erpnext/manufacturing/doctype/work_order_item/work_order_item.json b/erpnext/manufacturing/doctype/work_order_item/work_order_item.json
index 3acf572..f354d45 100644
--- a/erpnext/manufacturing/doctype/work_order_item/work_order_item.json
+++ b/erpnext/manufacturing/doctype/work_order_item/work_order_item.json
@@ -20,6 +20,7 @@
   "column_break_11",
   "transferred_qty",
   "consumed_qty",
+  "returned_qty",
   "available_qty_at_source_warehouse",
   "available_qty_at_wip_warehouse"
  ],
@@ -97,6 +98,7 @@
    "fieldtype": "Column Break"
   },
   {
+   "columns": 1,
    "depends_on": "eval:!parent.skip_transfer",
    "fieldname": "consumed_qty",
    "fieldtype": "Float",
@@ -127,11 +129,19 @@
    "fieldtype": "Currency",
    "label": "Amount",
    "read_only": 1
+  },
+  {
+   "columns": 1,
+   "fieldname": "returned_qty",
+   "fieldtype": "Float",
+   "in_list_view": 1,
+   "label": "Returned Qty ",
+   "read_only": 1
   }
  ],
  "istable": 1,
  "links": [],
- "modified": "2020-04-13 18:46:32.966416",
+ "modified": "2022-09-28 10:50:43.512562",
  "modified_by": "Administrator",
  "module": "Manufacturing",
  "name": "Work Order Item",
@@ -140,5 +150,6 @@
  "quick_entry": 1,
  "sort_field": "modified",
  "sort_order": "DESC",
+ "states": [],
  "track_changes": 1
 }
\ No newline at end of file
diff --git a/erpnext/manufacturing/report/work_order_consumed_materials/work_order_consumed_materials.js b/erpnext/manufacturing/report/work_order_consumed_materials/work_order_consumed_materials.js
index b2428e8..2fb4ec6 100644
--- a/erpnext/manufacturing/report/work_order_consumed_materials/work_order_consumed_materials.js
+++ b/erpnext/manufacturing/report/work_order_consumed_materials/work_order_consumed_materials.js
@@ -50,7 +50,7 @@
 			label: __("Status"),
 			fieldname: "status",
 			fieldtype: "Select",
-			options: ["In Process", "Completed", "Stopped"]
+			options: ["", "In Process", "Completed", "Stopped"]
 		},
 		{
 			label: __("Excess Materials Consumed"),
diff --git a/erpnext/manufacturing/report/work_order_consumed_materials/work_order_consumed_materials.py b/erpnext/manufacturing/report/work_order_consumed_materials/work_order_consumed_materials.py
index 8158bc9..14e97d3 100644
--- a/erpnext/manufacturing/report/work_order_consumed_materials/work_order_consumed_materials.py
+++ b/erpnext/manufacturing/report/work_order_consumed_materials/work_order_consumed_materials.py
@@ -1,6 +1,8 @@
 # Copyright (c) 2013, Frappe Technologies Pvt. Ltd. and contributors
 # For license information, please see license.txt
 
+from collections import defaultdict
+
 import frappe
 from frappe import _
 
@@ -18,7 +20,11 @@
 	filters = get_filter_condition(report_filters)
 
 	wo_items = {}
-	for d in frappe.get_all("Work Order", filters=filters, fields=fields):
+
+	work_orders = frappe.get_all("Work Order", filters=filters, fields=fields)
+	returned_materials = get_returned_materials(work_orders)
+
+	for d in work_orders:
 		d.extra_consumed_qty = 0.0
 		if d.consumed_qty and d.consumed_qty > d.required_qty:
 			d.extra_consumed_qty = d.consumed_qty - d.required_qty
@@ -39,6 +45,28 @@
 	return data
 
 
+def get_returned_materials(work_orders):
+	raw_materials_qty = defaultdict(float)
+
+	raw_materials = frappe.get_all(
+		"Stock Entry",
+		fields=["`tabStock Entry Detail`.`item_code`", "`tabStock Entry Detail`.`qty`"],
+		filters=[
+			["Stock Entry", "is_return", "=", 1],
+			["Stock Entry Detail", "docstatus", "=", 1],
+			["Stock Entry", "work_order", "in", [d.name for d in work_orders]],
+		],
+	)
+
+	for d in raw_materials:
+		raw_materials_qty[d.item_code] += d.qty
+
+	for row in work_orders:
+		row.returned_qty = 0.0
+		if raw_materials_qty.get(row.raw_material_item_code):
+			row.returned_qty = raw_materials_qty.get(row.raw_material_item_code)
+
+
 def get_fields():
 	return [
 		"`tabWork Order Item`.`parent`",
@@ -65,7 +93,7 @@
 	for field in ["name", "production_item", "company", "status"]:
 		value = report_filters.get(field)
 		if value:
-			key = f"`{field}`"
+			key = f"{field}"
 			filters.update({key: value})
 
 	return filters
@@ -112,4 +140,10 @@
 			"fieldtype": "Float",
 			"width": 100,
 		},
+		{
+			"label": _("Returned Qty"),
+			"fieldname": "returned_qty",
+			"fieldtype": "Float",
+			"width": 100,
+		},
 	]
diff --git a/erpnext/patches/v14_0/migrate_remarks_from_gl_to_payment_ledger.py b/erpnext/patches/v14_0/migrate_remarks_from_gl_to_payment_ledger.py
index 062d24b..fd2a2a3 100644
--- a/erpnext/patches/v14_0/migrate_remarks_from_gl_to_payment_ledger.py
+++ b/erpnext/patches/v14_0/migrate_remarks_from_gl_to_payment_ledger.py
@@ -3,6 +3,29 @@
 from frappe.utils import create_batch
 
 
+def remove_duplicate_entries(pl_entries):
+	unique_vouchers = set()
+	for x in pl_entries:
+		unique_vouchers.add(
+			(x.company, x.account, x.party_type, x.party, x.voucher_type, x.voucher_no, x.gle_remarks)
+		)
+
+	entries = []
+	for x in unique_vouchers:
+		entries.append(
+			frappe._dict(
+				company=x[0],
+				account=x[1],
+				party_type=x[2],
+				party=x[3],
+				voucher_type=x[4],
+				voucher_no=x[5],
+				gle_remarks=x[6],
+			)
+		)
+	return entries
+
+
 def execute():
 	if frappe.reload_doc("accounts", "doctype", "payment_ledger_entry"):
 
@@ -34,6 +57,8 @@
 			.run(as_dict=True)
 		)
 
+		pl_entries = remove_duplicate_entries(pl_entries)
+
 		if pl_entries:
 			# split into multiple batches, update and commit for each batch
 			batch_size = 1000
diff --git a/erpnext/public/scss/order-page.scss b/erpnext/public/scss/order-page.scss
new file mode 100644
index 0000000..6f5fe5d
--- /dev/null
+++ b/erpnext/public/scss/order-page.scss
@@ -0,0 +1,115 @@
+#page-order {
+    .main-column {
+        .page-content-wrapper {
+
+            .breadcrumb-container {
+                @media screen and (min-width: 567px) {
+                    padding-left: var(--padding-sm);
+                }
+            }
+
+            .container.my-4 {
+                background-color: var(--fg-color);
+
+                @media screen and (min-width: 567px) {
+                    padding: 1.25rem 1.5rem;
+                    border-radius: var(--border-radius-md);
+                    box-shadow: var(--card-shadow);
+                }
+            }
+        }
+    }
+}
+
+.indicator-container {
+    @media screen and (max-width: 567px) {
+        padding-bottom: 0.8rem;
+    }
+}
+
+.order-items {
+    padding: 1.5rem 0;
+    border-bottom: 1px solid var(--border-color);
+    color: var(--gray-700);
+
+    @media screen and (max-width: 567px) {
+        align-items: flex-start !important;
+    }
+    .col-2 {
+        @media screen and (max-width: 567px) {
+            flex: auto;
+            max-width: 28%;
+        }
+    }
+
+    .order-item-name {
+        font-size: var(--text-base);
+        font-weight: 500;
+    }
+
+    .btn:focus,
+    .btn:hover {
+        background-color: var(--control-bg);
+    }
+
+
+    .col-6 {
+        @media screen and (max-width: 567px) {
+            max-width: 100%;
+        }
+
+        &.order-item-name {
+            font-size: var(--text-base);
+        }
+    }
+}
+
+.item-grand-total {
+    font-size: var(--text-base);
+}
+
+.list-item-name,
+.item-total,
+.order-container,
+.order-qty {
+    font-size: var(--text-md);
+}
+
+.d-s-n {
+    @media screen and (max-width: 567px) {
+        display: none;
+    }
+}
+
+.d-l-n {
+    @media screen and (min-width: 567px) {
+        display: none;
+    }
+}
+
+.border-btm {
+    border-bottom: 1px solid var(--border-color);
+}
+
+.order-taxes {
+    display: flex;
+
+    @media screen and (min-width: 567px) {
+        justify-content: flex-end;
+    }
+
+    .col-4 {
+        padding-right: 0;
+
+        .col-8 {
+            padding-left: 0;
+            padding-right: 0;
+        }
+
+        @media screen and (max-width: 567px) {
+            padding-left: 0;
+            flex: auto;
+            max-width: 100%;
+        }
+    }
+}
\ No newline at end of file
diff --git a/erpnext/public/scss/website.scss b/erpnext/public/scss/website.scss
index 9ea8416..b5e97f1 100644
--- a/erpnext/public/scss/website.scss
+++ b/erpnext/public/scss/website.scss
@@ -1,3 +1,4 @@
+@import './order-page';
 
 .filter-options {
 	max-height: 300px;
@@ -32,19 +33,29 @@
 	height: 24px;
 }
 
-.website-list .result {
-	margin-top: 2rem;
-}
+.website-list {
+	background-color: var(--fg-color);
+	padding: 0 var(--padding-lg);
+	border-radius: var(--border-radius-md);
 
-.result {
-	border-bottom: 1px solid var(--border-color);
+	@media screen and (max-width: 567px) {
+		margin-left: -2rem;
+	}
+
+	&.result {
+		border-bottom: 1px solid var(--border-color);
+	}
 }
 
 .transaction-list-item {
 	padding: 1rem 0;
-	border-top: 1px solid var(--border-color);
+	border-bottom: 1px solid var(--border-color);
 	position: relative;
 
+	&:only-child, &:last-child {
+		border: 0;
+	}
+
 	a.transaction-item-link {
 		position: absolute;
 		top: 0;
@@ -68,3 +79,13 @@
 		line-height: 1.3;
 	}
 }
+
+.list-item-name, .item-total {
+	font-size: var(--font-size-sm);
+}
+
+.items-preview {
+	@media screen and (max-width: 567px) {
+		margin-top: 1rem;
+	}
+}
\ No newline at end of file
diff --git a/erpnext/stock/doctype/bin/bin.py b/erpnext/stock/doctype/bin/bin.py
index 548df31..c28f45a 100644
--- a/erpnext/stock/doctype/bin/bin.py
+++ b/erpnext/stock/doctype/bin/bin.py
@@ -37,8 +37,10 @@
 
 		self.set_projected_qty()
 
-		self.db_set("reserved_qty_for_production", flt(self.reserved_qty_for_production))
-		self.db_set("projected_qty", self.projected_qty)
+		self.db_set(
+			"reserved_qty_for_production", flt(self.reserved_qty_for_production), update_modified=True
+		)
+		self.db_set("projected_qty", self.projected_qty, update_modified=True)
 
 	def update_reserved_qty_for_sub_contracting(self, subcontract_doctype="Subcontracting Order"):
 		# reserved qty
@@ -118,9 +120,9 @@
 		else:
 			reserved_qty_for_sub_contract = 0
 
-		self.db_set("reserved_qty_for_sub_contract", reserved_qty_for_sub_contract)
+		self.db_set("reserved_qty_for_sub_contract", reserved_qty_for_sub_contract, update_modified=True)
 		self.set_projected_qty()
-		self.db_set("projected_qty", self.projected_qty)
+		self.db_set("projected_qty", self.projected_qty, update_modified=True)
 
 
 def on_doctype_update():
@@ -193,4 +195,5 @@
 			"planned_qty": planned_qty,
 			"projected_qty": projected_qty,
 		},
+		update_modified=True,
 	)
diff --git a/erpnext/stock/doctype/delivery_note/test_delivery_note.py b/erpnext/stock/doctype/delivery_note/test_delivery_note.py
index 6bcab73..1b9f168 100644
--- a/erpnext/stock/doctype/delivery_note/test_delivery_note.py
+++ b/erpnext/stock/doctype/delivery_note/test_delivery_note.py
@@ -6,7 +6,7 @@
 
 import frappe
 from frappe.tests.utils import FrappeTestCase
-from frappe.utils import cstr, flt, nowdate, nowtime
+from frappe.utils import add_days, cstr, flt, nowdate, nowtime, today
 
 from erpnext.accounts.doctype.account.test_account import get_inventory_account
 from erpnext.accounts.utils import get_balance_on
@@ -1091,6 +1091,36 @@
 			frappe.db.exists("GL Entry", {"voucher_no": dn.name, "voucher_type": dn.doctype})
 		)
 
+	def test_batch_expiry_for_delivery_note(self):
+		from erpnext.controllers.sales_and_purchase_return import make_return_doc
+		from erpnext.stock.doctype.purchase_receipt.test_purchase_receipt import make_purchase_receipt
+
+		item = make_item(
+			"_Test Batch Item For Return Check",
+			{
+				"is_purchase_item": 1,
+				"is_stock_item": 1,
+				"has_batch_no": 1,
+				"create_new_batch": 1,
+				"batch_number_series": "TBIRC.#####",
+			},
+		)
+
+		pi = make_purchase_receipt(qty=1, item_code=item.name)
+
+		dn = create_delivery_note(qty=1, item_code=item.name, batch_no=pi.items[0].batch_no)
+
+		dn.load_from_db()
+		batch_no = dn.items[0].batch_no
+		self.assertTrue(batch_no)
+
+		frappe.db.set_value("Batch", batch_no, "expiry_date", add_days(today(), -1))
+
+		return_dn = make_return_doc(dn.doctype, dn.name)
+		return_dn.save().submit()
+
+		self.assertTrue(return_dn.docstatus == 1)
+
 
 def create_delivery_note(**args):
 	dn = frappe.new_doc("Delivery Note")
@@ -1117,6 +1147,7 @@
 			"expense_account": args.expense_account or "Cost of Goods Sold - _TC",
 			"cost_center": args.cost_center or "_Test Cost Center - _TC",
 			"serial_no": args.serial_no,
+			"batch_no": args.batch_no or None,
 			"target_warehouse": args.target_warehouse,
 		},
 	)
diff --git a/erpnext/stock/doctype/pick_list/pick_list.py b/erpnext/stock/doctype/pick_list/pick_list.py
index adddb41..9c1c7e5 100644
--- a/erpnext/stock/doctype/pick_list/pick_list.py
+++ b/erpnext/stock/doctype/pick_list/pick_list.py
@@ -183,7 +183,7 @@
 				frappe.throw("Row #{0}: Item Code is Mandatory".format(item.idx))
 			item_code = item.item_code
 			reference = item.sales_order_item or item.material_request_item
-			key = (item_code, item.uom, item.warehouse, reference)
+			key = (item_code, item.uom, item.warehouse, item.batch_no, reference)
 
 			item.idx = None
 			item.name = None
diff --git a/erpnext/stock/doctype/repost_item_valuation/repost_item_valuation.py b/erpnext/stock/doctype/repost_item_valuation/repost_item_valuation.py
index c470524..d6f9bae 100644
--- a/erpnext/stock/doctype/repost_item_valuation/repost_item_valuation.py
+++ b/erpnext/stock/doctype/repost_item_valuation/repost_item_valuation.py
@@ -128,6 +128,9 @@
 		if not frappe.db.exists("Repost Item Valuation", doc.name):
 			return
 
+		# This is to avoid TooManyWritesError in case of large reposts
+		frappe.db.MAX_WRITES_PER_TRANSACTION *= 4
+
 		doc.set_status("In Progress")
 		if not frappe.flags.in_test:
 			frappe.db.commit()
diff --git a/erpnext/stock/doctype/stock_entry/stock_entry.json b/erpnext/stock/doctype/stock_entry/stock_entry.json
index abe98e2..7e9420d 100644
--- a/erpnext/stock/doctype/stock_entry/stock_entry.json
+++ b/erpnext/stock/doctype/stock_entry/stock_entry.json
@@ -148,19 +148,19 @@
    "search_index": 1
   },
   {
-    "depends_on": "eval:doc.purpose==\"Send to Subcontractor\"",
-    "fieldname": "purchase_order",
-    "fieldtype": "Link",
-    "label": "Purchase Order",
-    "options": "Purchase Order"
+   "depends_on": "eval:doc.purpose==\"Send to Subcontractor\"",
+   "fieldname": "purchase_order",
+   "fieldtype": "Link",
+   "label": "Purchase Order",
+   "options": "Purchase Order"
   },
   {
-    "depends_on": "eval:doc.purpose==\"Send to Subcontractor\"",
-    "fieldname": "subcontracting_order",
-    "fieldtype": "Link",
-    "label": "Subcontracting Order",
-    "options": "Subcontracting Order"
-   },
+   "depends_on": "eval:doc.purpose==\"Send to Subcontractor\"",
+   "fieldname": "subcontracting_order",
+   "fieldtype": "Link",
+   "label": "Subcontracting Order",
+   "options": "Subcontracting Order"
+  },
   {
    "depends_on": "eval:doc.purpose==\"Sales Return\"",
    "fieldname": "delivery_note_no",
@@ -616,6 +616,7 @@
    "fieldname": "is_return",
    "fieldtype": "Check",
    "hidden": 1,
+   "in_list_view": 1,
    "label": "Is Return",
    "no_copy": 1,
    "print_hide": 1,
@@ -627,7 +628,7 @@
  "index_web_pages_for_search": 1,
  "is_submittable": 1,
  "links": [],
- "modified": "2022-05-02 05:21:39.060501",
+ "modified": "2022-10-07 14:39:51.943770",
  "modified_by": "Administrator",
  "module": "Stock",
  "name": "Stock Entry",
diff --git a/erpnext/stock/doctype/stock_entry/stock_entry.py b/erpnext/stock/doctype/stock_entry/stock_entry.py
index 8bcd772..b116735 100644
--- a/erpnext/stock/doctype/stock_entry/stock_entry.py
+++ b/erpnext/stock/doctype/stock_entry/stock_entry.py
@@ -1212,13 +1212,19 @@
 
 	def update_work_order(self):
 		def _validate_work_order(pro_doc):
+			msg, title = "", ""
 			if flt(pro_doc.docstatus) != 1:
-				frappe.throw(_("Work Order {0} must be submitted").format(self.work_order))
+				msg = f"Work Order {self.work_order} must be submitted"
 
 			if pro_doc.status == "Stopped":
-				frappe.throw(
-					_("Transaction not allowed against stopped Work Order {0}").format(self.work_order)
-				)
+				msg = f"Transaction not allowed against stopped Work Order {self.work_order}"
+
+			if self.is_return and pro_doc.status not in ["Completed", "Closed"]:
+				title = _("Stock Return")
+				msg = f"Work Order {self.work_order} must be completed or closed"
+
+			if msg:
+				frappe.throw(_(msg), title=title)
 
 		if self.job_card:
 			job_doc = frappe.get_doc("Job Card", self.job_card)
@@ -1754,10 +1760,12 @@
 
 		for key, row in available_materials.items():
 			remaining_qty_to_produce = flt(wo_data.trans_qty) - flt(wo_data.produced_qty)
-			if remaining_qty_to_produce <= 0:
+			if remaining_qty_to_produce <= 0 and not self.is_return:
 				continue
 
-			qty = (flt(row.qty) * flt(self.fg_completed_qty)) / remaining_qty_to_produce
+			qty = flt(row.qty)
+			if not self.is_return:
+				qty = (flt(row.qty) * flt(self.fg_completed_qty)) / remaining_qty_to_produce
 
 			item = row.item_details
 			if cint(frappe.get_cached_value("UOM", item.stock_uom, "must_be_whole_number")):
@@ -1781,6 +1789,9 @@
 				self.update_item_in_stock_entry_detail(row, item, qty)
 
 	def update_item_in_stock_entry_detail(self, row, item, qty) -> None:
+		if not qty:
+			return
+
 		ste_item_details = {
 			"from_warehouse": item.warehouse,
 			"to_warehouse": "",
@@ -1794,6 +1805,9 @@
 			"original_item": item.original_item,
 		}
 
+		if self.is_return:
+			ste_item_details["to_warehouse"] = item.s_warehouse
+
 		if row.serial_nos:
 			serial_nos = row.serial_nos
 			if item.batch_no:
diff --git a/erpnext/stock/doctype/stock_entry/stock_entry_list.js b/erpnext/stock/doctype/stock_entry/stock_entry_list.js
index cbc3491..4eb0da1 100644
--- a/erpnext/stock/doctype/stock_entry/stock_entry_list.js
+++ b/erpnext/stock/doctype/stock_entry/stock_entry_list.js
@@ -1,8 +1,13 @@
 frappe.listview_settings['Stock Entry'] = {
 	add_fields: ["`tabStock Entry`.`from_warehouse`", "`tabStock Entry`.`to_warehouse`",
-		"`tabStock Entry`.`purpose`", "`tabStock Entry`.`work_order`", "`tabStock Entry`.`bom_no`"],
+		"`tabStock Entry`.`purpose`", "`tabStock Entry`.`work_order`", "`tabStock Entry`.`bom_no`",
+		"`tabStock Entry`.`is_return`"],
 	get_indicator: function (doc) {
-		if (doc.docstatus === 0) {
+		debugger
+		if(doc.is_return===1 && doc.purpose === "Material Transfer for Manufacture") {
+			return [__("Material Returned from WIP"), "orange",
+				"is_return,=,1|purpose,=,Material Transfer for Manufacture|docstatus,<,2"];
+		} else if (doc.docstatus === 0) {
 			return [__("Draft"), "red", "docstatus,=,0"];
 
 		} else if (doc.purpose === 'Send to Warehouse' && doc.per_transferred < 100) {
diff --git a/erpnext/stock/doctype/stock_ledger_entry/stock_ledger_entry.py b/erpnext/stock/doctype/stock_ledger_entry/stock_ledger_entry.py
index f7f8cbe..c64370d 100644
--- a/erpnext/stock/doctype/stock_ledger_entry/stock_ledger_entry.py
+++ b/erpnext/stock/doctype/stock_ledger_entry/stock_ledger_entry.py
@@ -153,7 +153,9 @@
 
 	def validate_batch(self):
 		if self.batch_no and self.voucher_type != "Stock Entry":
-			if self.voucher_type in ["Purchase Receipt", "Purchase Invoice"] and self.actual_qty < 0:
+			if (self.voucher_type in ["Purchase Receipt", "Purchase Invoice"] and self.actual_qty < 0) or (
+				self.voucher_type in ["Delivery Note", "Sales Invoice"] and self.actual_qty > 0
+			):
 				return
 
 			expiry_date = frappe.db.get_value("Batch", self.batch_no, "expiry_date")
diff --git a/erpnext/stock/stock_ledger.py b/erpnext/stock/stock_ledger.py
index 5030964..9ca40c3 100644
--- a/erpnext/stock/stock_ledger.py
+++ b/erpnext/stock/stock_ledger.py
@@ -1053,7 +1053,7 @@
 			updated_values = {"actual_qty": data.qty_after_transaction, "stock_value": data.stock_value}
 			if data.valuation_rate is not None:
 				updated_values["valuation_rate"] = data.valuation_rate
-			frappe.db.set_value("Bin", bin_name, updated_values)
+			frappe.db.set_value("Bin", bin_name, updated_values, update_modified=True)
 
 
 def get_previous_sle_of_current_voucher(args, exclude_current_voucher=False):
diff --git a/erpnext/templates/includes/footer/footer_extension.html b/erpnext/templates/includes/footer/footer_extension.html
index c7f0d06..0072dc2 100644
--- a/erpnext/templates/includes/footer/footer_extension.html
+++ b/erpnext/templates/includes/footer/footer_extension.html
@@ -6,7 +6,7 @@
 		aria-label="{{ _('Your email address...') }}"
 		aria-describedby="footer-subscribe-button">
 	<div class="input-group-append">
-		<button class="btn btn-sm btn-default"
+		<button class="btn btn-sm btn-secondary pl-3 pr-3 ml-2"
 			type="button" id="footer-subscribe-button">{{ _("Get Updates") }}</button>
 	</div>
 </div>
diff --git a/erpnext/templates/includes/macros.html b/erpnext/templates/includes/macros.html
index f56dc3a..dc9ee23 100644
--- a/erpnext/templates/includes/macros.html
+++ b/erpnext/templates/includes/macros.html
@@ -1,5 +1,5 @@
 {% macro product_image_square(website_image, css_class="") %}
-<div class="product-image product-image-square
+<div class="product-image product-image-square h-100 rounded
 	{% if not website_image -%} missing-image {%- endif %} {{ css_class }}"
 	{% if website_image -%}
 	style="background-image: url('{{ frappe.utils.quoted(website_image) | abs_url }}');"
diff --git a/erpnext/templates/includes/order/order_macros.html b/erpnext/templates/includes/order/order_macros.html
index 3f2c1f2..d95b289 100644
--- a/erpnext/templates/includes/order/order_macros.html
+++ b/erpnext/templates/includes/order/order_macros.html
@@ -3,7 +3,7 @@
 {% macro item_name_and_description(d) %}
 	<div class="row item_name_and_description">
 		<div class="col-xs-4 col-sm-2 order-image-col">
-			<div class="order-image">
+			<div class="order-image h-100">
 				{% if d.thumbnail or d.image %}
 					{{ product_image(d.thumbnail or d.image, no_border=True) }}
 				{% else %}
@@ -18,6 +18,9 @@
 			<div class="text-muted small item-description">
 				{{ html2text(d.description) | truncate(140) }}
 			</div>
+			<span class="text-muted mt-2 d-l-n order-qty">
+				{{ _("Qty ") }}({{ d.get_formatted("qty") }})
+			</span>
 		</div>
 	</div>
 {% endmacro %}
diff --git a/erpnext/templates/includes/order/order_taxes.html b/erpnext/templates/includes/order/order_taxes.html
index b821e62..0060ab3 100644
--- a/erpnext/templates/includes/order/order_taxes.html
+++ b/erpnext/templates/includes/order/order_taxes.html
@@ -1,84 +1,111 @@
 {% if doc.taxes %}
-<tr>
-	<td class="text-left" colspan="1">
-		{{ _("Net Total") }}
-	</td>
-	<td class="text-right totals" colspan="3">
-		{{ doc.get_formatted("net_total") }}
-	</td>
-</tr>
+	<div class="w-100 order-taxes mt-5">
+		<div class="col-4 d-flex  border-btm pb-5">
+			<div class="item-grand-total col-8">
+				{{ _("Net Total") }}
+			</div>
+			<div class="item-grand-total col-4 text-right pr-0">
+				{{ doc.get_formatted("net_total") }}
+			</div>
+		</div>
+	</div>
 {% endif %}
 
 {% for d in doc.taxes %}
 	{% if d.base_tax_amount %}
-	<tr>
-		<td class="text-left" colspan="1">
-			{{ d.description }}
-		</td>
-		<td class="text-right totals" colspan="3">
-			{{ d.get_formatted("base_tax_amount") }}
-		</td>
-	</tr>
+		<div class="order-taxes w-100 mt-5">
+			<div class="col-4 d-flex  border-btm pb-5">
+				<div class="item-grand-total col-8">
+					{{ d.description }}
+				</div>
+				<div class="item-grand-total col-4 text-right pr-0">
+					{{ doc.get_formatted("net_total") }}
+				</div>
+			</div>
+		</div>
 	{% endif %}
 {% endfor %}
 
 {% if doc.doctype == 'Quotation' %}
 	{% if doc.coupon_code %}
-		<tr>
-			<td class="text-left total-discount" colspan="1">
-				{{ _("Savings") }}
-			</td>
-			<td class="text-right tot_quotation_discount total-discount totals" colspan="3">
-				{% set tot_quotation_discount = [] %}
-				{%- for item in doc.items -%}
-					{% if tot_quotation_discount.append((((item.price_list_rate * item.qty)
-						* item.discount_percentage) / 100)) %}
-					{% endif %}
-				{% endfor %}
-				{{ frappe.utils.fmt_money((tot_quotation_discount | sum),currency=doc.currency) }}
-			</td>
-		</tr>
+		<div class="w-100 mt-5 order-taxes font-weight-bold">
+			<div class="col-4 d-flex  border-btm pb-5">
+				<div class="item-grand-total col-8">
+					{{ _("Savings") }}
+				</div>
+				<div class="item-grand-total col-4 text-right pr-0">
+					{% set tot_quotation_discount = [] %}
+					{%- for item in doc.items -%}
+						{% if tot_quotation_discount.append((((item.price_list_rate * item.qty)
+							* item.discount_percentage) / 100)) %}
+						{% endif %}
+					{% endfor %}
+					{{ frappe.utils.fmt_money((tot_quotation_discount | sum),currency=doc.currency) }} </div>
+			</div>
+		</div>
 	{% endif %}
 {% endif %}
 
 {% if doc.doctype == 'Sales Order' %}
 	{% if doc.coupon_code %}
-		<tr>
-			<td class="text-left total-discount" colspan="2" style="padding-right: 2rem;">
-				{{ _("Applied Coupon Code") }}
-			</td>
-			<td class="text-right total-discount">
-				<span>
-				{%- for row in frappe.get_all(doctype="Coupon Code",
-				fields=["coupon_code"], filters={ "name":doc.coupon_code}) -%}
-					<span>{{ row.coupon_code }}</span>
-				{% endfor %}
-				</span>
-			</td>
-		</tr>
-		<tr>
-			<td class="text-left total-discount" colspan="2">
-				{{ _("Savings") }}
-			</td>
-			<td class="text-right total-discount">
-				<span>
-				{% set tot_SO_discount = [] %}
-				{%- for item in doc.items -%}
-				{% if tot_SO_discount.append((((item.price_list_rate * item.qty)
-					* item.discount_percentage) / 100)) %}{% endif %}
-				{% endfor %}
-				{{ frappe.utils.fmt_money((tot_SO_discount | sum),currency=doc.currency) }}
-				</span>
-			</td>
-		</tr>
+		<div class="w-100 order-taxes mt-5">
+			<div class="col-4 d-flex  border-btm pb-5">
+				<div class="item-grand-total col-8">
+					{{ _("Total Amount") }}
+				</div>
+				<div class="item-grand-total col-4 text-right pr-0">
+					<span>
+						{% set total_amount = [] %}
+						{%- for item in doc.items -%}
+						{% if total_amount.append((item.price_list_rate * item.qty)) %}{% endif %}
+						{% endfor %}
+						{{ frappe.utils.fmt_money((total_amount | sum),currency=doc.currency) }}
+					</span>
+				</div>
+			</div>
+		</div>
+		<div class="order-taxes w-100 mt-5">
+			<div class="col-4 d-flex">
+				<div class="item-grand-total col-8">
+					{{ _("Applied Coupon Code") }}
+				</div>
+				<div class="item-grand-total col-4 text-right pr-0">
+					<span>
+						{%- for row in frappe.get_all(doctype="Coupon Code",
+						fields=["coupon_code"], filters={ "name":doc.coupon_code}) -%}
+							<span>{{ row.coupon_code }}</span>
+						{% endfor %}
+					</span>
+				</div>
+			</div>
+		</div>
+		<div class="order-taxes mt-5">
+			<div class="col-4 d-flex border-btm pb-5">
+				<div class="item-grand-total col-8">
+					{{ _("Savings") }}
+				</div>
+				<div class="item-grand-total col-4 text-right pr-0">
+					<span>
+						{% set tot_SO_discount = [] %}
+						{%- for item in doc.items -%}
+						{% if tot_SO_discount.append((((item.price_list_rate * item.qty)
+						* item.discount_percentage) / 100)) %}{% endif %}
+						{% endfor %}
+						{{ frappe.utils.fmt_money((tot_SO_discount | sum),currency=doc.currency) }}
+					</span>
+				</div>
+			</div>
+		</div>
 	{% endif %}
 {% endif %}
 
-<tr>
-	<th class="text-left item-grand-total" colspan="1">
-		{{ _("Grand Total") }}
-	</th>
-	<th class="text-right item-grand-total totals" colspan="3">
-		{{ doc.get_formatted("grand_total") }}
-	</th>
-</tr>
+<div class="w-100 mt-5 order-taxes font-weight-bold">
+	<div class="col-4 d-flex">
+		<div class="item-grand-total col-8">
+			{{ _("Grand Total") }}
+		</div>
+		<div class="item-grand-total col-4 text-right pr-0">
+			{{ doc.get_formatted("grand_total") }}
+		</div>
+	</div>
+</div>
diff --git a/erpnext/templates/includes/transaction_row.html b/erpnext/templates/includes/transaction_row.html
index 3cfb8d8..72d498c 100644
--- a/erpnext/templates/includes/transaction_row.html
+++ b/erpnext/templates/includes/transaction_row.html
@@ -1,20 +1,22 @@
 <div class="web-list-item transaction-list-item">
-	<div class="row">
+	<div class="row align-items-center">
 		<div class="col-sm-4">
-			<span class="indicator small {{ doc.indicator_color or ("blue" if doc.docstatus==1 else "gray") }}">
-			{{ doc.name }}</span>
+			<span class="list-item-name font-weight-bold">{{ doc.name }}</span>
 			<div class="small text-muted transaction-time"
 				title="{{ frappe.utils.format_datetime(doc.modified, "medium") }}">
 				{{ frappe.utils.global_date_format(doc.modified) }}
 			</div>
 		</div>
-		<div class="col-sm-5">
+		<div class="col-sm-3">
+			<span class="indicator-pill {{ doc.indicator_color or ("blue" if doc.docstatus==1 else "gray") }} list-item-status">{{doc.status}}</span>
+		</div>
+		<div class="col-sm-2">
 			<div class="small text-muted items-preview ellipsis ellipsis-width">
 				{{ doc.items_preview }}
 			</div>
 		</div>
 		{% if doc.get('grand_total') %}
-			<div class="col-sm-3 text-right bold">
+			<div class="col-sm-3 text-right font-weight-bold item-total">
 				{{ doc.get_formatted("grand_total") }}
 			</div>
 		{% endif %}
diff --git a/erpnext/templates/pages/demo.html b/erpnext/templates/pages/demo.html
deleted file mode 100644
index f9934a3..0000000
--- a/erpnext/templates/pages/demo.html
+++ /dev/null
@@ -1,77 +0,0 @@
-{% extends "templates/web.html" %}
-
-{% block script %}
-<script>
-$(document).ready(function() {
-    $("#login_btn").click(function() {
-        var me = this;
-        $(this).html("Logging In...").prop("disabled", true);
-        frappe.call({
-            "method": "login",
-            args: {
-                usr: "demo@erpnext.com",
-                pwd: "Demo1234567!!!",
-                lead_email: $("#lead-email").val(),
-            },
-            callback: function(r) {
-                $(me).prop("disabled", false);
-                if(r.exc) {
-                    alert("Error, please contact support@erpnext.com");
-                } else {
-                    console.log("Logged In");
-                    window.location.href = "desk";
-                }
-            }
-        })
-        return false;
-    })
-    .prop("disabled", false);
-})
-
-</script>
-{% endblock %}
-
-{% block style %}
-<style>
-	footer, .navbar {
-		display: none;
-	}
-	.page-content {
-		right: 0%;
-		width: 100%;
-	}
-    {% include "templates/styles/card_style.css" %}
-    header, footer {
-        display: none;
-    }
-    html, body {
-        background-color: #f5f7fa;
-    }
-</style>
-{% endblock %}
-
-{% block title %}
-{{ _("ERPNext Demo") }}
-{% endblock %}
-
-{% block page_content %}
-<div class='page-card'>
-
-	<div class='page-card-head'>
-		<span class='indicator blue'>
-			{{ _("ERPNext Demo") }}</span>
-	</div>
-	<!-- <img src="/assets/erpnext/images/erp-icon.svg" style="max-width: 40px; max-height: 40px;"> -->
-	<p>Some functionality is disabled for the demo and the data will be cleared regularly.</p>
-	<div><button type="submit" id="login_btn" class="btn btn-primary btn-sm">Launch Demo</button></div>
-</div>
-
-
-<p class='text-muted text-center small' style='margin-top: -20px;'><a href="https://erpnext.com/pricing">Start a free 14-day trial </a>
-</p>
-<style>
-html, body {
-	background-color: #f5f7fa;
-}
-</style>
-{% endblock %}
diff --git a/erpnext/templates/pages/order.html b/erpnext/templates/pages/order.html
index ec1d497..6b354b2 100644
--- a/erpnext/templates/pages/order.html
+++ b/erpnext/templates/pages/order.html
@@ -5,149 +5,159 @@
 	{% include "templates/includes/breadcrumbs.html" %}
 {% endblock %}
 
-{% block title %}{{ doc.name }}{% endblock %}
+{% block title %}
+	{{ doc.name }}
+{% endblock %}
 
 {% block header %}
-	<h2 class="m-0">{{ doc.name }}</h2>
+	<h3 class="m-0">{{ doc.name }}</h3>
 {% endblock %}
 
 {% block header_actions %}
-	<div class="dropdown">
-		<button class="btn btn-outline-secondary dropdown-toggle" data-toggle="dropdown" aria-expanded="false">
-			<span class="font-md">{{ _('Actions') }}</span>
-			<b class="caret"></b>
-		</button>
-		<ul class="dropdown-menu dropdown-menu-right" role="menu">
-			{% if doc.doctype == 'Purchase Order' and show_make_pi_button %}
-				<a class="dropdown-item" href="/api/method/erpnext.buying.doctype.purchase_order.purchase_order.make_purchase_invoice_from_portal?purchase_order_name={{ doc.name }}" data-action="make_purchase_invoice">{{ _("Make Purchase Invoice") }}</a>
-			{% endif %}
-			<a class="dropdown-item" href='/printview?doctype={{ doc.doctype}}&name={{ doc.name }}&format={{ print_format }}'
-				target="_blank" rel="noopener noreferrer">
-				{{ _("Print") }}
-			</a>
-		</ul>
+	<div class="row">
+		<div class="dropdown">
+			<button class="btn btn-sm btn-secondary dropdown-toggle" data-toggle="dropdown" aria-expanded="false">
+				<span class="font-md">{{ _('Actions') }}</span>
+				<b class="caret"></b>
+			</button>
+			<ul class="dropdown-menu dropdown-menu-right" role="menu">
+				{% if doc.doctype == 'Purchase Order' and show_make_pi_button %}
+					<a class="dropdown-item"
+						href="/api/method/erpnext.buying.doctype.purchase_order.purchase_order.make_purchase_invoice_from_portal?purchase_order_name={{ doc.name }}"
+						data-action="make_purchase_invoice">{{ _("Make Purchase Invoice") }}
+					</a>
+				{% endif %}
+				<a class="dropdown-item"
+					href='/printview?doctype={{ doc.doctype}}&name={{ doc.name }}&format={{ print_format }}' target="_blank"
+					rel="noopener noreferrer">
+					{{ _("Print") }}
+				</a>
+			</ul>
+		</div>
+		<div class="form-column col-sm-6">
+			<div class="page-header-actions-block" data-html-block="header-actions">
+				<p>
+					<a href="/api/method/erpnext.accounts.doctype.payment_request.payment_request.make_payment_request?dn={{ doc.name }}&dt={{ doc.doctype }}&submit_doc=1&order_type=Shopping Cart"
+						class="btn btn-primary btn-sm" id="pay-for-order">
+						{{ _("Pay") }} {{doc.get_formatted("grand_total") }}
+					</a>
+				</p>
+			</div>
+		</div>
 	</div>
 {% endblock %}
 
 {% block page_content %}
-	<div class="row transaction-subheading">
-		<div class="col-6">
-			<span class="font-md indicator-pill {{ doc.indicator_color or ("blue" if doc.docstatus==1 else "darkgrey") }}">
-				{% if doc.doctype == "Quotation" and not doc.docstatus %}
-					{{ _("Pending") }}
-				{% else %}
-					{{ _(doc.get('indicator_title')) or _(doc.status) or _("Submitted") }}
+	<div>
+		<div class="row transaction-subheading  mt-1">
+			<div class="col-6 text-muted small mt-1">
+				{{ frappe.utils.format_date(doc.transaction_date, 'medium') }}
+				{% if doc.valid_till %}
+					<p>
+						{{ _("Valid Till") }}: {{ frappe.utils.format_date(doc.valid_till, 'medium') }}
+					</p>
 				{% endif %}
-			</span>
+			</div>
 		</div>
-		<div class="col-6 text-muted text-right small pt-3">
-			{{ frappe.utils.format_date(doc.transaction_date, 'medium') }}
-			{% if doc.valid_till %}
-			<p>
-			{{ _("Valid Till") }}: {{ frappe.utils.format_date(doc.valid_till, 'medium') }}
-			</p>
-			{% endif %}
-		</div>
-	</div>
-
-	<p class="small my-3">
-		{%- set party_name = doc.supplier_name if doc.doctype in ['Supplier Quotation', 'Purchase Invoice', 'Purchase Order'] else doc.customer_name %}
-		<b>{{ party_name }}</b>
-
-		{% if doc.contact_display and doc.contact_display != party_name %}
-			<br>
-			{{ doc.contact_display }}
-		{% endif %}
-	</p>
-
-	{% if doc._header %}
-		{{ doc._header }}
-	{% endif %}
-
-	<div class="order-container">
-		<!-- items -->
-		<table class="order-item-table w-100 table">
-			<thead class="order-items order-item-header">
-				<th width="60%">
-					{{ _("Item") }}
-				</th>
-				<th width="20%" class="text-right">
-					{{ _("Quantity") }}
-				</th>
-				<th width="20%" class="text-right">
-					{{ _("Amount") }}
-				</th>
-			</thead>
-			<tbody>
-			{% for d in doc.items %}
-			<tr class="order-items">
-				<td>
-					{{ item_name_and_description(d) }}
-				</td>
-				<td class="text-right">
-					{{ d.qty }}
-					{% if d.delivered_qty is defined and d.delivered_qty != None %}
-						<p class="text-muted small">{{ _("Delivered") }}&nbsp;{{ d.delivered_qty }}</p>
+		<div class="row indicator-container mt-2">
+			<div class="col-10">
+				<span class="indicator-pill {{ doc.indicator_color or (" blue" if doc.docstatus==1 else "darkgrey" ) }}">
+					{% if doc.doctype == "Quotation" and not doc.docstatus %}
+						{{ _("Pending") }}
+					{% else %}
+						{{ _(doc.get('indicator_title')) or _(doc.status) or _("Submitted") }}
 					{% endif %}
-				</td>
-				<td class="text-right">
-					{{ d.get_formatted("amount")	 }}
-					<p class="text-muted small">{{ _("Rate:") }}&nbsp;{{ d.get_formatted("rate") }}</p>
-				</td>
-			</tr>
-			{% endfor %}
-			</tbody>
-		</table>
-		<!-- taxes -->
-		<div class="order-taxes d-flex justify-content-end">
-			<table>
+				</span>
+			</div>
+			<div class="text-right col-2">
+				{%- set party_name = doc.supplier_name if doc.doctype in ['Supplier Quotation', 'Purchase Invoice', 'Purchase
+				Order'] else doc.customer_name %}
+				<b>{{ party_name }}</b>
+
+				{% if doc.contact_display and doc.contact_display != party_name %}
+					<br>
+					{{ doc.contact_display }}
+				{% endif %}
+			</div>
+		</div>
+
+		{% if doc._header %}
+			{{ doc._header }}
+		{% endif %}
+
+		<div class="order-container mt-4">
+			<!-- items -->
+			<div class="w-100">
+				<div class="order-items order-item-header mb-1 row text-muted">
+					<span class="col-5">
+						{{ _("Item") }}
+					</span>
+					<span class="d-s-n col-3">
+						{{ _("Quantity") }}
+					</span>
+					<span class="col-2 pl-10">
+						{{ _("Rate") }}
+					</span>
+					<span class="col-2 text-right">
+						{{ _("Amount") }}
+					</span>
+				</div>
+				{% for d in doc.items %}
+				<div class="order-items row align-items-center">
+					<span class="order-item-name col-5 pr-0">
+						{{ item_name_and_description(d) }}
+					</span>
+
+					<span class="d-s-n col-3 pl-10">
+						{{ d.get_formatted("qty") }}
+					</span>
+					<span class="order-rate pl-4 col-2">
+						{{ d.get_formatted("rate") }}
+					</span>
+					<span class="col-2 text-right">
+						{{ d.get_formatted("amount") }}
+					</span>
+				</div>
+				{% endfor %}
+			</div>
+
+			<!-- taxes -->
+			<div class="">
 				{% include "erpnext/templates/includes/order/order_taxes.html" %}
-			</table>
+			</div>
 		</div>
 	</div>
 
 	{% if enabled_checkout and ((doc.doctype=="Sales Order" and doc.per_billed <= 0)
-		or (doc.doctype=="Sales Invoice" and doc.outstanding_amount > 0)) %}
+		or (doc.doctype=="Sales Invoice" and doc.outstanding_amount> 0)) %}
 		<div class="panel panel-default">
-			<div class="panel-heading">
-				<div class="row">
-					<div class="form-column col-sm-6 address-title">
-						<strong>Payment</strong>
-					</div>
-				</div>
-			</div>
 			<div class="panel-collapse">
 				<div class="panel-body text-muted small">
 					<div class="row">
 						<div class="form-column col-sm-6">
 							{% if available_loyalty_points %}
+							<div class="panel-heading">
+								<div class="row">
+									<div class="form-column col-sm-6 address-title">
+										<strong>Loyalty Points</strong>
+									</div>
+								</div>
+							</div>
+
 							<div class="form-group">
 								<div class="h6">Enter Loyalty Points</div>
 								<div class="control-input-wrapper">
 									<div class="control-input">
-										<input class="form-control" type="number" min="0" max="{{ available_loyalty_points }}" id="loyalty-point-to-redeem">
+										<input class="form-control" type="number" min="0"
+											max="{{ available_loyalty_points }}" id="loyalty-point-to-redeem">
 									</div>
-									<p class="help-box small text-muted d-none d-sm-block"> Available Points: {{ available_loyalty_points }} </p>
+									<p class="help-box small text-muted d-none d-sm-block"> Available Points: {{
+										available_loyalty_points }} </p>
 								</div>
 							</div>
 							{% endif %}
 						</div>
-
-						<div class="form-column col-sm-6">
-							<div id="loyalty-points-status" style="text-align: right"></div>
-							<div class="page-header-actions-block" data-html-block="header-actions">
-								<p class="mt-2" style="float: right;">
-									<a href="/api/method/erpnext.accounts.doctype.payment_request.payment_request.make_payment_request?dn={{ doc.name }}&dt={{ doc.doctype }}&submit_doc=1&order_type=Shopping Cart"
-										class="btn btn-primary btn-sm"
-										id="pay-for-order">
-										{{ _("Pay") }} {{ doc.get_formatted("grand_total") }}
-									</a>
-								</p>
-							</div>
-						</div>
-
 					</div>
-
 				</div>
 			</div>
 		</div>
@@ -172,17 +182,17 @@
 			</div>
 		</div>
 	{% endif %}
-	</div>
 
 	{% if doc.terms %}
 		<div class="terms-and-condition text-muted small">
-			<hr><p>{{ doc.terms }}</p>
+			<hr>
+			<p>{{ doc.terms }}</p>
 		</div>
 	{% endif %}
 {% endblock %}
 
 {% block script %}
-	<script> {% include "templates/pages/order.js" %} </script>
+	<script> {% include "templates/pages/order.js" %}</script>
 	<script>
 		window.doc_info = {
 			customer: '{{doc.customer}}',
@@ -192,4 +202,4 @@
 			currency: '{{ doc.currency }}'
 		}
 	</script>
-{% endblock %}
+{% endblock %}
\ No newline at end of file
diff --git a/erpnext/translations/fr.csv b/erpnext/translations/fr.csv
index b207461..3ba5ade 100644
--- a/erpnext/translations/fr.csv
+++ b/erpnext/translations/fr.csv
@@ -785,7 +785,7 @@
 Default BOM not found for Item {0} and Project {1},La nomenclature par défaut n'a pas été trouvée pour l'Article {0} et le Projet {1},
 Default Letter Head,En-Tête de Courrier par Défaut,
 Default Tax Template,Modèle de Taxes par Défaut,
-Default Unit of Measure for Item {0} cannot be changed directly because you have already made some transaction(s) with another UOM. You will need to create a new Item to use a different Default UOM.,L’Unité de Mesure par Défaut pour l’Article {0} ne peut pas être modifiée directement parce que vous avez déjà fait une (des) transaction (s) avec une autre unité de mesure. Vous devez créer un nouvel article pour utiliser une UDM par défaut différente.,
+Default Unit of Measure for Item {0} cannot be changed directly because you have already made some transaction(s) with another UOM. You will need to create a new Item to use a different Default UOM.,L’Unité de Mesure par Défaut pour l’Article {0} ne peut pas être modifiée directement parce que vous avez déjà fait une (des) transaction (s) avec une autre unité de mesure. Vous devez créer un nouvel article pour utiliser une UdM par défaut différente.,
 Default Unit of Measure for Variant '{0}' must be same as in Template '{1}',L’Unité de mesure par défaut pour la variante '{0}' doit être la même que dans le Modèle '{1}',
 Default settings for buying transactions.,Paramètres par défaut pour les transactions d'achat.,
 Default settings for selling transactions.,Paramètres par défaut pour les transactions de vente.,
@@ -838,7 +838,7 @@
 "Difference Account must be a Asset/Liability type account, since this Stock Reconciliation is an Opening Entry","Le Compte d’Écart doit être un compte de type Actif / Passif, puisque cette Réconciliation de Stock est une écriture d'à-nouveau",
 Difference Amount,Écart de Montant,
 Difference Amount must be zero,L’Écart de Montant doit être égal à zéro,
-Different UOM for items will lead to incorrect (Total) Net Weight value. Make sure that Net Weight of each item is in the same UOM.,Différentes UDM pour les articles conduira à un Poids Net (Total) incorrect . Assurez-vous que le Poids Net de chaque article a la même unité de mesure .,
+Different UOM for items will lead to incorrect (Total) Net Weight value. Make sure that Net Weight of each item is in the same UOM.,Différentes UdM pour les articles conduira à un Poids Net (Total) incorrect . Assurez-vous que le Poids Net de chaque article a la même unité de mesure .,
 Direct Expenses,Charges Directes,
 Direct Income,Revenu direct,
 Disable,Désactiver,
@@ -1409,7 +1409,7 @@
 Lab Test Report,Rapport de test de laboratoire,
 Lab Test Sample,Échantillon de test de laboratoire,
 Lab Test Template,Modèle de test de laboratoire,
-Lab Test UOM,UDM de test de laboratoire,
+Lab Test UOM,UdM de test de laboratoire,
 Lab Tests and Vital Signs,Tests de laboratoire et signes vitaux,
 Lab result datetime cannot be before testing datetime,La date et l'heure du résultat de laboratoire ne peuvent pas être avant la date et l'heure du test,
 Lab testing datetime cannot be before collection datetime,La date et l'heure du test de laboratoire ne peuvent pas être avant la date et l'heure de collecte,
@@ -2806,7 +2806,7 @@
 Stock Reports,Rapports de stock,
 Stock Summary,Résumé du Stock,
 Stock Transactions,Transactions du Stock,
-Stock UOM,UDM du Stock,
+Stock UOM,UdM du Stock,
 Stock Value,Valeur du Stock,
 Stock balance in Batch {0} will become negative {1} for Item {2} at Warehouse {3},Solde du stock dans le Lot {0} deviendra négatif {1} pour l'Article {2} à l'Entrepôt {3},
 Stock cannot be updated against Delivery Note {0},Stock ne peut pas être mis à jour pour le Bon de Livraison {0},
@@ -3161,9 +3161,9 @@
 Trialling,Essai,
 Type of Business,Type de commerce,
 Types of activities for Time Logs,Types d'activités pour Journaux de Temps,
-UOM,UDM,
-UOM Conversion factor is required in row {0},Facteur de conversion de l'UDM est obligatoire dans la ligne {0},
-UOM coversion factor required for UOM: {0} in Item: {1},Facteur de coversion UDM requis pour l'UDM : {0} dans l'Article : {1},
+UOM,UdM,
+UOM Conversion factor is required in row {0},Facteur de conversion de l'UdM est obligatoire dans la ligne {0},
+UOM coversion factor required for UOM: {0} in Item: {1},Facteur de coversion UdM requis pour l'UdM : {0} dans l'Article : {1},
 URL,URL,
 Unable to find DocType {0},Impossible de trouver le DocType {0},
 Unable to find exchange rate for {0} to {1} for key date {2}. Please create a Currency Exchange record manually,Impossible de trouver le taux de change pour {0} à {1} pour la date clé {2}. Veuillez créer une entrée de taux de change manuellement,
@@ -3294,7 +3294,7 @@
 Week,Semaine,
 Weekdays,Jours de la semaine,
 Weekly,Hebdomadaire,
-"Weight is mentioned,\nPlease mention ""Weight UOM"" too","Poids est mentionné,\nVeuillez aussi mentionner ""UDM de Poids""",
+"Weight is mentioned,\nPlease mention ""Weight UOM"" too","Poids est mentionné,\nVeuillez aussi mentionner ""UdM de Poids""",
 Welcome email sent,Email de bienvenue envoyé,
 Welcome to ERPNext,Bienvenue sur ERPNext,
 What do you need help with?,Avec quoi avez vous besoin d'aide ?,
@@ -4938,12 +4938,15 @@
 Coupon Code Based,Code de coupon basé,
 Discount on Other Item,Remise sur un autre article,
 Apply Rule On Other,Appliquer la règle sur autre,
-Party Information,Informations sur la fête,
+Party Information,Informations sur le tier,
 Quantity and Amount,Quantité et montant,
 Min Qty,Qté Min,
 Max Qty,Qté Max,
-Min Amt,Min Amt,
-Max Amt,Max Amt,
+Min Amt,Montant Min,
+Max Amt,Montant Max,
+"If rate is zero them item will be treated as ""Free Item""",Si le prix est à 0 alors l'article sera traité comme article gratuit
+Is Recursive,Est récursif
+"Discounts to be applied in sequential ranges like buy 1 get 1, buy 2 get 2, buy 3 get 3 and so on","La remise sera appliquée séquentiellement telque : acheter 1 => recupérer 1, acheter 2 => recupérer 2, acheter 3 => recupérer 3, etc..."
 Period Settings,Paramètres de période,
 Margin,Marge,
 Margin Type,Type de Marge,
@@ -5053,7 +5056,7 @@
 Received Qty,Qté Reçue,
 Accepted Qty,Quantité acceptée,
 Rejected Qty,Qté Rejetée,
-UOM Conversion Factor,Facteur de Conversion de l'UDM,
+UOM Conversion Factor,Facteur de Conversion de l'UdM,
 Discount on Price List Rate (%),Remise sur la Liste des Prix (%),
 Price List Rate (Company Currency),Taux de la Liste de Prix (Devise Société),
 Rate (Company Currency),Prix (Devise Société),
@@ -5085,7 +5088,7 @@
 Item Weight Details,Détails du poids de l'article,
 Weight Per Unit,Poids par unité,
 Total Weight,Poids total,
-Weight UOM,UDM de Poids,
+Weight UOM,UdM de Poids,
 Page Break,Saut de Page,
 Consider Tax or Charge for,Tenir Compte de la Taxe et des Frais pour,
 Valuation and Total,Valorisation et Total,
@@ -5153,7 +5156,7 @@
 Sales Invoice Item,Article de la Facture de Vente,
 Customer's Item Code,Code de l'Article du Client,
 Brand Name,Nom de la Marque,
-Qty as per Stock UOM,Qté par UDM du Stock,
+Qty as per Stock UOM,Qté par UdM du Stock,
 Discount and Margin,Remise et Marge,
 Rate With Margin,Prix Avec Marge,
 Discount (%) on Price List Rate with Margin,Remise (%) sur le prix de la Liste de Prix avec la Marge,
@@ -5501,7 +5504,7 @@
 Returned Qty,Qté Retournée,
 Purchase Order Item Supplied,Article Fourni depuis la Commande d'Achat,
 BOM Detail No,N° de Détail de la nomenclature,
-Stock Uom,UDM du Stock,
+Stock Uom,UdM du Stock,
 Raw Material Item Code,Code d’Article de Matière Première,
 Supplied Qty,Qté Fournie,
 Purchase Receipt Item Supplied,Articles Fournis du Reçus d’Achat,
@@ -6149,7 +6152,7 @@
 Dosage,Dosage,
 Dosage by Time Interval,Dosage par intervalle de temps,
 Interval,Intervalle,
-Interval UOM,UDM d'Intervalle,
+Interval UOM,UdM d'Intervalle,
 Hour,Heure,
 Update Schedule,Mettre à Jour le Calendrier,
 Exercise,Exercice,
@@ -7023,7 +7026,7 @@
 Diesel,Diesel,
 Natural Gas,Gaz Naturel,
 Electric,Électrique,
-Fuel UOM,UDM Carburant,
+Fuel UOM,UdM Carburant,
 Last Carbon Check,Dernière Vérification Carbone,
 Wheels,Roues,
 Doors,Portes,
@@ -7182,7 +7185,7 @@
 Quantity of item obtained after manufacturing / repacking from given quantities of raw materials,Quantité d'article obtenue après production / reconditionnement des quantités données de matières premières,
 Set rate of sub-assembly item based on BOM,Définir le prix des articles de sous-assemblage en fonction de la nomenclature,
 Allow Alternative Item,Autoriser un article alternatif,
-Item UOM,UDM de l'Article,
+Item UOM,UdM de l'Article,
 Conversion Rate,Taux de Conversion,
 Rate Of Materials Based On,Prix des Matériaux Basé sur,
 With Operations,Avec des Opérations,
@@ -7926,7 +7929,7 @@
 For reference,Pour référence,
 Territory Targets,Objectifs Régionaux,
 Set Item Group-wise budgets on this Territory. You can also include seasonality by setting the Distribution.,Définir des budgets par Groupes d'Articles sur ce Territoire. Vous pouvez également inclure de la saisonnalité en définissant la Répartition.,
-UOM Name,Nom UDM,
+UOM Name,Nom UdM,
 Check this to disallow fractions. (for Nos),Cochez cette case pour interdire les fractions. (Pour les numéros),
 Website Item Group,Groupe d'Articles du Site Web,
 Cross Listing of Item in multiple groups,Liste Croisée d'Articles dans plusieurs groupes,
@@ -8198,10 +8201,10 @@
 If more than one package of the same type (for print),Si plus d'un paquet du même type (pour l'impression),
 Package Weight Details,Détails du Poids du Paquet,
 The net weight of this package. (calculated automatically as sum of net weight of items),Le poids net de ce paquet. (Calculé automatiquement comme la somme du poids net des articles),
-Net Weight UOM,UDM Poids Net,
+Net Weight UOM,UdM Poids Net,
 Gross Weight,Poids Brut,
 The gross weight of the package. Usually net weight + packaging material weight. (for print),Le poids brut du colis. Habituellement poids net + poids du matériau d'emballage. (Pour l'impression),
-Gross Weight UOM,UDM du Poids Brut,
+Gross Weight UOM,UdM du Poids Brut,
 Packing Slip Item,Article Emballé,
 DN Detail,Détail du Bon de Livraison,
 STO-PICK-.YYYY.-,STO-PICK-.YYYY.-,
@@ -8215,7 +8218,7 @@
 Picked Qty,Quantité choisie,
 Price List Master,Données de Base des Listes de Prix,
 Price List Name,Nom de la Liste de Prix,
-Price Not UOM Dependent,Prix non dépendant de l'UOM,
+Price Not UOM Dependent,Prix non dépendant de l'UdM,
 Applicable for Countries,Applicable pour les Pays,
 Price List Country,Pays de la Liste des Prix,
 MAT-PRE-.YYYY.-,MAT-PRE-YYYY.-,
@@ -8294,7 +8297,7 @@
 Inspection Required,Inspection obligatoire,
 From BOM,Depuis la nomenclature,
 For Quantity,Pour la Quantité,
-As per Stock UOM,Selon UDM du Stock,
+As per Stock UOM,Selon UdM du Stock,
 Including items for sub assemblies,Incluant les articles pour des sous-ensembles,
 Default Source Warehouse,Entrepôt Source par Défaut,
 Source Warehouse Address,Adresse de l'entrepôt source,
@@ -8309,7 +8312,7 @@
 Customer or Supplier Details,Détails du Client ou du Fournisseur,
 Per Transferred,Par transféré,
 Stock Entry Detail,Détails de l'Écriture de Stock,
-Basic Rate (as per Stock UOM),Prix de base (comme l’UDM du Stock),
+Basic Rate (as per Stock UOM),Prix de base (comme l’UdM du Stock),
 Basic Amount,Montant de Base,
 Additional Cost,Frais Supplémentaire,
 Serial No / Batch,N° de Série / Lot,
@@ -8339,7 +8342,7 @@
 Amount Difference,Différence de Montant,
 Item Naming By,Nomenclature d'Article Par,
 Default Item Group,Groupe d'Éléments par Défaut,
-Default Stock UOM,UDM par Défaut des Articles,
+Default Stock UOM,UdM par Défaut des Articles,
 Sample Retention Warehouse,Entrepôt de stockage des échantillons,
 Default Valuation Method,Méthode de Valorisation par Défaut,
 Show Barcode Field,Afficher Champ Code Barre,
@@ -8353,8 +8356,8 @@
 Batch Identification,Identification par lots,
 Use Naming Series,Utiliser la série de noms,
 Naming Series Prefix,Préfix du nom de série,
-UOM Category,Catégorie d'unité de mesure (UDM),
-UOM Conversion Detail,Détails de Conversion de l'UDM,
+UOM Category,Catégorie d'unité de mesure (UdM),
+UOM Conversion Detail,Détails de Conversion de l'UdM,
 Variant Field,Champ de Variante,
 A logical Warehouse against which stock entries are made.,Un Entrepôt logique dans lequel les entrées en stock sont faites.,
 Warehouse Detail,Détail de l'Entrepôt,
@@ -9869,8 +9872,8 @@
 Party Specific Item,Restriction d'article disponible
 Restrict Items Based On,Type de critére de restriction
 Based On Value,critére de restriction
-Unit of Measure (UOM),Unité de mesure (UDM),
-Unit Of Measure (UOM),Unité de mesure (UDM),
+Unit of Measure (UOM),Unité de mesure (UdM),
+Unit Of Measure (UOM),Unité de mesure (UdM),
 CRM Settings,Paramètres CRM
 Do Not Explode,Ne pas décomposer
 Quick Access, Accés rapides
