fixed erpnext/frappe#1441 and other pos related cleanups
diff --git a/erpnext/selling/sales_common.js b/erpnext/selling/sales_common.js
index 1b48a8e..12aca89 100644
--- a/erpnext/selling/sales_common.js
+++ b/erpnext/selling/sales_common.js
@@ -403,13 +403,15 @@
 		// paid_amount and write_off_amount is only for POS Invoice
 		// total_advance is only for non POS Invoice
 		if(this.frm.doc.doctype == "Sales Invoice" && this.frm.doc.docstatus==0) {
-			frappe.model.round_floats_in(this.frm.doc, ["grand_total", "total_advance", "write_off_amount",
-				"paid_amount"]);
-			var total_amount_to_pay = this.frm.doc.grand_total - this.frm.doc.write_off_amount - this.frm.doc.total_advance;
-			this.frm.doc.paid_amount = this.frm.doc.is_pos? flt(total_amount_to_pay): 0.0;
-
-			this.frm.doc.outstanding_amount = flt(total_amount_to_pay - this.frm.doc.paid_amount, 
-				precision("outstanding_amount"));
+			if(this.frm.doc.paid_amount==null) {
+				frappe.model.round_floats_in(this.frm.doc, ["grand_total", "total_advance", "write_off_amount",
+					"paid_amount"]);
+				var total_amount_to_pay = this.frm.doc.grand_total - this.frm.doc.write_off_amount 
+					- this.frm.doc.total_advance;
+				this.frm.doc.paid_amount = this.frm.doc.is_pos ? flt (total_amount_to_pay) : 0.0;
+				this.frm.set_value("outstanding_amount", flt(total_amount_to_pay 
+					- this.frm.doc.paid_amount, precision("outstanding_amount")));
+			}
 		}
 	},