diff --git a/accounts/Print Format/POS Invoice/POS Invoice.txt b/accounts/Print Format/POS Invoice/POS Invoice.txt
index 2d48fff4302..ebf25e42530 100644
--- a/accounts/Print Format/POS Invoice/POS Invoice.txt
+++ b/accounts/Print Format/POS Invoice/POS Invoice.txt
@@ -2,14 +2,14 @@
{
"creation": "2011-12-21 11:08:55",
"docstatus": 0,
- "modified": "2013-08-29 17:40:19",
+ "modified": "2013-08-30 12:46:21",
"modified_by": "Administrator",
"owner": "Administrator"
},
{
"doc_type": "Sales Invoice",
"doctype": "Print Format",
- "html": "\n
\n\n\n\n\n\n\n\n \n | RECEIPT NO: | \n DATE: | \n
\n \n | M/s | \n
\n
\n\n\n\n\n",
+ "html": "\n\n\n\n\n\n\n\n\n \n | RECEIPT NO: | \n DATE: | \n
\n \n | M/s | \n
\n
\n\n\n\n\n",
"module": "Accounts",
"name": "__common__",
"print_format_type": "Client",
diff --git a/accounts/doctype/pos_setting/pos_setting.py b/accounts/doctype/pos_setting/pos_setting.py
index 73f5ed6e721..b794c668a0d 100755
--- a/accounts/doctype/pos_setting/pos_setting.py
+++ b/accounts/doctype/pos_setting/pos_setting.py
@@ -7,7 +7,7 @@ from webnotes import msgprint, _
from webnotes.utils import cint
class DocType:
- def __init__(self,doc,doclist=[]):
+ def __init__(self,doc,doclist):
self.doc, self.doclist = doc,doclist
def get_series(self):
@@ -18,6 +18,7 @@ class DocType:
return series and series[0] or ''
def validate(self):
+ self.prev_user = webnotes.conn.get_value("POS Setting", self.doc.name, "user")
self.check_for_duplicate()
self.validate_expense_account()
@@ -36,4 +37,17 @@ class DocType:
def validate_expense_account(self):
if cint(webnotes.defaults.get_global_default("auto_inventory_accounting")) \
and not self.doc.expense_account:
- msgprint(_("Expense Account is mandatory"), raise_exception=1)
\ No newline at end of file
+ msgprint(_("Expense Account is mandatory"), raise_exception=1)
+
+ def on_update(self):
+ webnotes.defaults.clear_default("is_pos")
+
+ pos_view_users = webnotes.conn.sql_list("""select user from `tabPOS Setting`""")
+ for user in pos_view_users:
+ if user:
+ webnotes.defaults.set_user_default("is_pos", 1, user)
+ else:
+ webnotes.defaults.set_global_default("is_pos", 1)
+
+ def on_trash(self):
+ self.on_update()
\ No newline at end of file
diff --git a/accounts/doctype/sales_invoice/pos.js b/accounts/doctype/sales_invoice/pos.js
index 6ef48112af5..a092e2863f6 100644
--- a/accounts/doctype/sales_invoice/pos.js
+++ b/accounts/doctype/sales_invoice/pos.js
@@ -199,13 +199,16 @@ erpnext.POS = Class.extend({
})).appendTo($wrap);
});
- $("div.pos-item").on("click", function() {
- if(!cur_frm.doc.customer) {
- msgprint("Please select customer first.");
- return;
- }
- me.add_to_cart($(this).attr("data-item_code"));
- });
+ // if form is local then allow this function
+ if (cur_frm.doc.docstatus===0) {
+ $("div.pos-item").on("click", function() {
+ if(!cur_frm.doc.customer) {
+ msgprint("Please select customer first.");
+ return;
+ }
+ me.add_to_cart($(this).attr("data-item_code"));
+ });
+ }
}
});
},
@@ -303,33 +306,45 @@ erpnext.POS = Class.extend({
this.wrapper.find(".grand-total").text(format_currency(this.frm.doc.grand_total_export,
cur_frm.doc.price_list_currency));
- $("input.qty").on("focus", function() {
- $(this).select();
- });
+ // if form is local then only run all these functions
+ if (cur_frm.doc.docstatus===0) {
+ $("input.qty").on("focus", function() {
+ $(this).select();
+ });
- // append quantity to the respective item after change from input box
- $("input.qty").on("change", function() {
- var item_code = $(this).closest("tr")[0].id;
- me.update_qty(item_code, $(this).val(), true);
- });
+ // append quantity to the respective item after change from input box
+ $("input.qty").on("change", function() {
+ var item_code = $(this).closest("tr")[0].id;
+ me.update_qty(item_code, $(this).val(), true);
+ });
+
+ // on td click toggle the highlighting of row
+ $("#cart tbody tr td").on("click", function() {
+ var row = $(this).closest("tr");
+ if (row.attr("data-selected") == "false") {
+ row.attr("class", "warning");
+ row.attr("data-selected", "true");
+ }
+ else {
+ row.prop("class", null);
+ row.attr("data-selected", "false");
+ }
+ me.refresh_delete_btn();
+
+ });
- // on td click toggle the highlighting of row
- $("#cart tbody tr td").on("click", function() {
- var row = $(this).closest("tr");
- if (row.attr("data-selected") == "false") {
- row.attr("class", "warning");
- row.attr("data-selected", "true");
- }
- else {
- row.prop("class", null);
- row.attr("data-selected", "false");
- }
me.refresh_delete_btn();
-
- });
-
- me.refresh_delete_btn();
- cur_frm.pos.barcode.$input.focus();
+ cur_frm.pos.barcode.$input.focus();
+ }
+
+ // if form is submitted & cancelled then disable all input box & buttons
+ if (cur_frm.doc.docstatus>=1) {
+ me.wrapper.find('input, button').each(function () {
+ $(this).prop('disabled', true);
+ });
+ $(".delete-items").hide();
+ $(".make-payment").hide();
+ }
},
refresh_delete_btn: function() {
$(".delete-items").toggle($(".item-cart .warning").length ? true : false);
diff --git a/accounts/doctype/sales_invoice/pos.py b/accounts/doctype/sales_invoice/pos.py
index 2f2ad6a36c2..1b867cb8dbc 100644
--- a/accounts/doctype/sales_invoice/pos.py
+++ b/accounts/doctype/sales_invoice/pos.py
@@ -3,6 +3,7 @@
from __future__ import unicode_literals
import webnotes
+from webnotes import msgprint
@webnotes.whitelist()
def get_items(price_list, item=None, item_group=None):
diff --git a/accounts/doctype/sales_invoice/sales_invoice.js b/accounts/doctype/sales_invoice/sales_invoice.js
index 5cfc27105d3..20df233bfec 100644
--- a/accounts/doctype/sales_invoice/sales_invoice.js
+++ b/accounts/doctype/sales_invoice/sales_invoice.js
@@ -26,9 +26,18 @@ erpnext.accounts.SalesInvoiceController = erpnext.selling.SellingController.exte
}
}
- if(this.frm.doc.is_pos) {
+ // toggle to pos view if is_pos is 1 in user_defaults
+ if (cint(wn.defaults.get_user_defaults("is_pos"))===1 || cur_frm.doc.is_pos) {
+ this.frm.set_value("is_pos", 1);
+ this.is_pos();
cur_frm.cscript.toggle_pos(true);
}
+
+ // if document is POS then change default print format to "POS Invoice"
+ if(cur_frm.doc.is_pos && cur_frm.doc.docstatus===1) {
+ locals.DocType[cur_frm.doctype].default_print_format = "POS Invoice";
+ cur_frm.setup_print();
+ }
},
refresh: function(doc, dt, dn) {
@@ -94,7 +103,8 @@ erpnext.accounts.SalesInvoiceController = erpnext.selling.SellingController.exte
});
});
}
-
+
+ // Show POS button only if it enabled from features setup
if(cint(sys_defaults.fs_pos_view)===1)
cur_frm.cscript.pos_btn();
},
@@ -115,13 +125,9 @@ erpnext.accounts.SalesInvoiceController = erpnext.selling.SellingController.exte
cur_frm.cscript.toggle_pos();
cur_frm.cscript.pos_btn();
}, icon);
-
},
- toggle_pos: function(show) {
- // if(cint(sys_defaults.fs_pos_view)===0) return;
- // if(!(this.frm.doc.is_pos && this.frm.doc.docstatus===0)) return;
-
+ toggle_pos: function(show) {
if (!this.frm.doc.selling_price_list)
msgprint(wn._("Please select Price List"))
else {
diff --git a/accounts/doctype/sales_invoice/sales_invoice.txt b/accounts/doctype/sales_invoice/sales_invoice.txt
index dbdf42fd3ea..ca2b4b243fa 100644
--- a/accounts/doctype/sales_invoice/sales_invoice.txt
+++ b/accounts/doctype/sales_invoice/sales_invoice.txt
@@ -2,13 +2,14 @@
{
"creation": "2013-05-24 19:29:05",
"docstatus": 0,
- "modified": "2013-08-09 14:45:42",
+ "modified": "2013-09-01 05:26:13",
"modified_by": "Administrator",
"owner": "Administrator"
},
{
"allow_attach": 1,
"autoname": "naming_series:",
+ "default_print_format": "Standard",
"doctype": "DocType",
"document_type": "Transaction",
"icon": "icon-file-text",
diff --git a/patches/patch_list.py b/patches/patch_list.py
index 1d382a56bd7..dd95e2dfd71 100644
--- a/patches/patch_list.py
+++ b/patches/patch_list.py
@@ -257,4 +257,6 @@ patch_list = [
"execute:webnotes.reload_doc('accounts', 'Print Format', 'POS Invoice') # 2013-08-16",
"patches.august_2013.p06_fix_sle_against_stock_entry",
"execute:webnotes.bean('Style Settings').save() #2013-08-20",
+ "patches.september_2013.p01_add_user_defaults_from_pos_setting",
+ "execute:webnotes.reload_doc('accounts', 'Print Format', 'POS Invoice') # 2013-09-02",
]
\ No newline at end of file
diff --git a/patches/september_2013/__init__.py b/patches/september_2013/__init__.py
new file mode 100644
index 00000000000..baffc488252
--- /dev/null
+++ b/patches/september_2013/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/patches/september_2013/p01_add_user_defaults_from_pos_setting.py b/patches/september_2013/p01_add_user_defaults_from_pos_setting.py
new file mode 100644
index 00000000000..f3a9344464d
--- /dev/null
+++ b/patches/september_2013/p01_add_user_defaults_from_pos_setting.py
@@ -0,0 +1,13 @@
+# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd.
+# License: GNU General Public License v3. See license.txt
+
+from __future__ import unicode_literals
+import webnotes
+
+def execute():
+ pos_view_users = webnotes.conn.sql_list("""select user from `tabPOS Setting`""")
+ for user in pos_view_users:
+ if user:
+ webnotes.defaults.set_user_default("is_pos", 1, user)
+ else:
+ webnotes.defaults.set_global_default("is_pos", 1)
\ No newline at end of file