fix: Made period fields read only and added validation for multiple entries by same user
diff --git a/erpnext/selling/doctype/pos_closing_voucher/pos_closing_voucher.js b/erpnext/selling/doctype/pos_closing_voucher/pos_closing_voucher.js
index 13bd878..f24caf7 100644
--- a/erpnext/selling/doctype/pos_closing_voucher/pos_closing_voucher.js
+++ b/erpnext/selling/doctype/pos_closing_voucher/pos_closing_voucher.js
@@ -76,6 +76,7 @@
 					refresh_field("grand_total");
 					refresh_field("net_total");
 					refresh_field("total_quantity");
+					refresh_field("total_amount");
 
 					frm.get_field("payment_reconciliation_details").$wrapper.html(r.message);
 				}
diff --git a/erpnext/selling/doctype/pos_closing_voucher/pos_closing_voucher.json b/erpnext/selling/doctype/pos_closing_voucher/pos_closing_voucher.json
index 0ebea83..2ac5779 100644
--- a/erpnext/selling/doctype/pos_closing_voucher/pos_closing_voucher.json
+++ b/erpnext/selling/doctype/pos_closing_voucher/pos_closing_voucher.json
@@ -39,7 +39,7 @@
    "precision": "", 
    "print_hide": 0, 
    "print_hide_if_no_value": 0, 
-   "read_only": 0, 
+   "read_only": 1, 
    "remember_last_selected_value": 0, 
    "report_hide": 0, 
    "reqd": 1, 
@@ -72,7 +72,7 @@
    "precision": "", 
    "print_hide": 0, 
    "print_hide_if_no_value": 0, 
-   "read_only": 0, 
+   "read_only": 1, 
    "remember_last_selected_value": 0, 
    "report_hide": 0, 
    "reqd": 1, 
@@ -958,7 +958,7 @@
  "issingle": 0, 
  "istable": 0, 
  "max_attachments": 0, 
- "modified": "2019-01-26 13:23:49.192650", 
+ "modified": "2019-01-28 12:33:45.217813", 
  "modified_by": "Administrator", 
  "module": "Selling", 
  "name": "POS Closing Voucher", 
diff --git a/erpnext/selling/doctype/pos_closing_voucher/pos_closing_voucher.py b/erpnext/selling/doctype/pos_closing_voucher/pos_closing_voucher.py
index e7fc85e..c45571f 100644
--- a/erpnext/selling/doctype/pos_closing_voucher/pos_closing_voucher.py
+++ b/erpnext/selling/doctype/pos_closing_voucher/pos_closing_voucher.py
@@ -4,6 +4,7 @@
 
 from __future__ import unicode_literals
 import frappe
+from frappe import _
 from frappe.model.document import Document
 from collections import defaultdict
 from erpnext.controllers.taxes_and_totals import get_itemised_tax_breakup_data
@@ -26,6 +27,7 @@
 
 		sales_summary = get_sales_summary(invoice_list)
 		self.set_sales_summary_values(sales_summary)
+		self.total_amount = sales_summary['grand_total']
 
 		if not self.get('payment_reconciliation'):
 			mop = get_mode_of_payment_details(invoice_list)
@@ -36,6 +38,21 @@
 
 		return self.get_payment_reconciliation_details()
 
+	def validate(self):
+		user = frappe.get_all('POS Closing Voucher',
+			filters = {
+				'user': self.user,
+				'docstatus': 1
+			},
+			or_filters = {
+					'period_start_date': ('between', [self.period_start_date, self.period_end_date]),
+					'period_end_date': ('between', [self.period_start_date, self.period_end_date])
+			})
+
+		if user:
+			frappe.throw(_("POS Closing Voucher alreday exists for {0} between date {1} and {2}"
+				.format(self.user, self.period_start_date, self.period_end_date)))
+
 	def set_invoice_list(self, invoice_list):
 		self.sales_invoices_summary = []
 		for invoice in invoice_list: