Merge pull request #5770 from saurabh6790/demo_expense_claim

[enhance] demo for expense claim #5731
diff --git a/erpnext/accounts/doctype/sales_invoice/sales_invoice.js b/erpnext/accounts/doctype/sales_invoice/sales_invoice.js
index 8ca4d5f..b73673f 100644
--- a/erpnext/accounts/doctype/sales_invoice/sales_invoice.js
+++ b/erpnext/accounts/doctype/sales_invoice/sales_invoice.js
@@ -263,6 +263,10 @@
 				});
 			}
 		}
+	},
+
+	amount: function(){
+		this.write_off_outstanding_amount_automatically()
 	}
 });
 
diff --git a/erpnext/public/js/controllers/taxes_and_totals.js b/erpnext/public/js/controllers/taxes_and_totals.js
index e7485c1..fde33e8 100644
--- a/erpnext/public/js/controllers/taxes_and_totals.js
+++ b/erpnext/public/js/controllers/taxes_and_totals.js
@@ -549,13 +549,6 @@
 		if(this.frm.doc.doctype == "Sales Invoice" || this.frm.doc.doctype == "Purchase Invoice") {
 			frappe.model.round_floats_in(this.frm.doc, ["paid_amount"]);
 
-			if(this.frm.doc.is_pos || this.frm.doc.is_paid) {
-				if(!this.frm.doc.paid_amount || update_paid_amount===undefined || update_paid_amount) {
-					this.frm.doc.paid_amount = flt(total_amount_to_pay);
-				}
-			} else {
-				this.frm.doc.paid_amount = 0
-			}
 			this.set_in_company_currency(this.frm.doc, ["paid_amount"]);
 
 			if(this.frm.refresh_field){
@@ -564,6 +557,7 @@
 			}
 
 			if(this.frm.doc.doctype == "Sales Invoice"){
+				this.set_default_payment(total_amount_to_pay, update_paid_amount)
 				this.calculate_paid_amount()
 			}
 
@@ -585,6 +579,19 @@
 		this.calculate_change_amount()
 	},
 
+	set_default_payment: function(total_amount_to_pay, update_paid_amount){
+		var me = this;
+		payment_status = true;
+		if(this.frm.doc.is_pos && (!this.frm.doc.paid_amount || update_paid_amount===undefined || update_paid_amount)){
+			$.each(this.frm.doc['payments'] || [], function(index, data){
+				if(data.type == "Cash" && payment_status) {
+					data.amount = total_amount_to_pay;
+					payment_status = false;
+				}
+			})
+		}
+	},
+
 	calculate_paid_amount: function(){
 		var me = this;
 		var paid_amount = base_paid_amount = 0.0;
diff --git a/erpnext/public/js/payment/payments.js b/erpnext/public/js/payment/payments.js
index dc0b026..9464f50 100644
--- a/erpnext/public/js/payment/payments.js
+++ b/erpnext/public/js/payment/payments.js
@@ -74,7 +74,7 @@
 		this.highlight_selected_row()
 		this.payment_val = 0.0
 		if(this.frm.doc.outstanding_amount > 0 && flt(this.selected_mode.val()) == 0.0){
-			//When user first tithis click on row
+			//When user first time click on row
 			this.payment_val = flt(this.frm.doc.outstanding_amount)
 			this.selected_mode.val(format_number(this.payment_val, 2));
 			this.update_paid_amount()
diff --git a/erpnext/stock/doctype/stock_reconciliation/stock_reconciliation.py b/erpnext/stock/doctype/stock_reconciliation/stock_reconciliation.py
index c5992c2..82b7e11 100644
--- a/erpnext/stock/doctype/stock_reconciliation/stock_reconciliation.py
+++ b/erpnext/stock/doctype/stock_reconciliation/stock_reconciliation.py
@@ -246,6 +246,18 @@
 		for item in get_items(warehouse, self.posting_date, self.posting_time):
 			self.append("items", item)
 
+	def submit(self):
+		if len(self.items) > 100:
+			self.queue_action('submit')
+		else:
+			self._submit()
+
+	def cancel(self):
+		if len(self.items) > 100:
+			self.queue_action('cancel')
+		else:
+			self._cancel()
+
 @frappe.whitelist()
 def get_items(warehouse, posting_date, posting_time):
 	items = frappe.get_list("Bin", fields=["item_code"], filters={"warehouse": warehouse}, as_list=1)