diff --git a/erpnext/accounts/doctype/pos_profile/pos_profile.json b/erpnext/accounts/doctype/pos_profile/pos_profile.json index cef56af7470..a25dd5198d8 100644 --- a/erpnext/accounts/doctype/pos_profile/pos_profile.json +++ b/erpnext/accounts/doctype/pos_profile/pos_profile.json @@ -22,7 +22,6 @@ "ignore_xss_filter": 0, "in_filter": 0, "in_list_view": 1, - "in_standard_filter": 1, "label": "Applicable for User", "length": 0, "no_copy": 0, @@ -52,7 +51,6 @@ "ignore_xss_filter": 0, "in_filter": 0, "in_list_view": 1, - "in_standard_filter": 0, "label": "Series", "length": 0, "no_copy": 1, @@ -84,7 +82,6 @@ "ignore_xss_filter": 0, "in_filter": 0, "in_list_view": 0, - "in_standard_filter": 0, "label": "Update Stock", "length": 0, "no_copy": 0, @@ -112,7 +109,6 @@ "ignore_xss_filter": 0, "in_filter": 0, "in_list_view": 0, - "in_standard_filter": 0, "label": "Warehouse", "length": 0, "no_copy": 0, @@ -142,7 +138,6 @@ "ignore_xss_filter": 0, "in_filter": 0, "in_list_view": 0, - "in_standard_filter": 0, "label": "Campaign", "length": 0, "no_copy": 0, @@ -159,34 +154,6 @@ "set_only_once": 0, "unique": 0 }, - { - "allow_on_submit": 0, - "bold": 0, - "collapsible": 0, - "columns": 0, - "fieldname": "ignore_pricing_rule", - "fieldtype": "Check", - "hidden": 0, - "ignore_user_permissions": 0, - "ignore_xss_filter": 0, - "in_filter": 0, - "in_list_view": 0, - "in_standard_filter": 0, - "label": "Ignore Pricing Rule", - "length": 0, - "no_copy": 0, - "permlevel": 0, - "precision": "", - "print_hide": 0, - "print_hide_if_no_value": 0, - "read_only": 0, - "remember_last_selected_value": 0, - "report_hide": 0, - "reqd": 0, - "search_index": 0, - "set_only_once": 0, - "unique": 0 - }, { "allow_on_submit": 0, "bold": 0, @@ -199,7 +166,6 @@ "ignore_xss_filter": 0, "in_filter": 0, "in_list_view": 0, - "in_standard_filter": 0, "length": 0, "no_copy": 0, "permlevel": 0, @@ -226,7 +192,6 @@ "ignore_xss_filter": 0, "in_filter": 0, "in_list_view": 0, - "in_standard_filter": 0, "label": "Customer", "length": 0, "no_copy": 0, @@ -256,7 +221,6 @@ "ignore_xss_filter": 0, "in_filter": 0, "in_list_view": 1, - "in_standard_filter": 1, "label": "Company", "length": 0, "no_copy": 0, @@ -286,7 +250,6 @@ "ignore_xss_filter": 0, "in_filter": 0, "in_list_view": 0, - "in_standard_filter": 0, "label": "Currency", "length": 0, "no_copy": 0, @@ -304,6 +267,33 @@ "set_only_once": 0, "unique": 0 }, + { + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "columns": 0, + "fieldname": "ignore_pricing_rule", + "fieldtype": "Check", + "hidden": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Ignore Pricing Rule", + "length": 0, + "no_copy": 0, + "permlevel": 0, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "read_only": 0, + "remember_last_selected_value": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, + "unique": 0 + }, { "allow_on_submit": 0, "bold": 0, @@ -316,7 +306,6 @@ "ignore_xss_filter": 0, "in_filter": 0, "in_list_view": 0, - "in_standard_filter": 0, "label": "Allow Delete", "length": 0, "no_copy": 0, @@ -332,6 +321,33 @@ "set_only_once": 0, "unique": 0 }, + { + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "columns": 0, + "fieldname": "allow_user_to_edit_rate", + "fieldtype": "Check", + "hidden": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Allow user to edit Rate", + "length": 0, + "no_copy": 0, + "permlevel": 0, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "read_only": 0, + "remember_last_selected_value": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, + "unique": 0 + }, { "allow_on_submit": 0, "bold": 0, @@ -344,7 +360,6 @@ "ignore_xss_filter": 0, "in_filter": 0, "in_list_view": 0, - "in_standard_filter": 0, "length": 0, "no_copy": 0, "permlevel": 0, @@ -371,7 +386,6 @@ "ignore_xss_filter": 0, "in_filter": 0, "in_list_view": 0, - "in_standard_filter": 0, "label": "Sales Invoice Payment", "length": 0, "no_copy": 0, @@ -400,7 +414,6 @@ "ignore_xss_filter": 0, "in_filter": 0, "in_list_view": 0, - "in_standard_filter": 0, "length": 0, "no_copy": 0, "permlevel": 0, @@ -427,7 +440,6 @@ "ignore_xss_filter": 0, "in_filter": 0, "in_list_view": 0, - "in_standard_filter": 0, "label": "Item Groups", "length": 0, "no_copy": 0, @@ -456,7 +468,6 @@ "ignore_xss_filter": 0, "in_filter": 0, "in_list_view": 0, - "in_standard_filter": 0, "length": 0, "no_copy": 0, "permlevel": 0, @@ -483,7 +494,6 @@ "ignore_xss_filter": 0, "in_filter": 0, "in_list_view": 0, - "in_standard_filter": 0, "label": "Customer Groups", "length": 0, "no_copy": 0, @@ -512,7 +522,6 @@ "ignore_xss_filter": 0, "in_filter": 0, "in_list_view": 0, - "in_standard_filter": 0, "length": 0, "no_copy": 0, "permlevel": 0, @@ -540,7 +549,6 @@ "ignore_xss_filter": 0, "in_filter": 0, "in_list_view": 0, - "in_standard_filter": 0, "label": "Print Format", "length": 0, "no_copy": 0, @@ -569,7 +577,6 @@ "ignore_xss_filter": 0, "in_filter": 0, "in_list_view": 0, - "in_standard_filter": 0, "label": "Letter Head", "length": 0, "no_copy": 0, @@ -599,7 +606,6 @@ "ignore_xss_filter": 0, "in_filter": 0, "in_list_view": 0, - "in_standard_filter": 0, "label": "Print Heading", "length": 0, "no_copy": 0, @@ -629,7 +635,6 @@ "ignore_xss_filter": 0, "in_filter": 0, "in_list_view": 0, - "in_standard_filter": 0, "label": "Terms and Conditions", "length": 0, "no_copy": 0, @@ -659,7 +664,6 @@ "ignore_xss_filter": 0, "in_filter": 0, "in_list_view": 0, - "in_standard_filter": 0, "length": 0, "no_copy": 0, "oldfieldtype": "Column Break", @@ -687,7 +691,6 @@ "ignore_xss_filter": 0, "in_filter": 0, "in_list_view": 1, - "in_standard_filter": 0, "label": "Territory", "length": 0, "no_copy": 0, @@ -717,7 +720,6 @@ "ignore_xss_filter": 0, "in_filter": 0, "in_list_view": 0, - "in_standard_filter": 0, "label": "Price List", "length": 0, "no_copy": 0, @@ -747,7 +749,6 @@ "ignore_xss_filter": 0, "in_filter": 0, "in_list_view": 0, - "in_standard_filter": 0, "label": "Apply Discount", "length": 0, "no_copy": 0, @@ -777,7 +778,6 @@ "ignore_xss_filter": 0, "in_filter": 0, "in_list_view": 0, - "in_standard_filter": 0, "label": "Apply Discount On", "length": 0, "no_copy": 0, @@ -806,7 +806,6 @@ "ignore_xss_filter": 0, "in_filter": 0, "in_list_view": 0, - "in_standard_filter": 0, "length": 0, "no_copy": 0, "permlevel": 0, @@ -834,7 +833,6 @@ "ignore_xss_filter": 0, "in_filter": 0, "in_list_view": 0, - "in_standard_filter": 0, "label": "Write Off Account", "length": 0, "no_copy": 0, @@ -863,7 +861,6 @@ "ignore_xss_filter": 0, "in_filter": 0, "in_list_view": 0, - "in_standard_filter": 0, "label": "Write Off Cost Center", "length": 0, "no_copy": 0, @@ -892,7 +889,6 @@ "ignore_xss_filter": 0, "in_filter": 0, "in_list_view": 0, - "in_standard_filter": 0, "label": "Account for Change Amount", "length": 0, "no_copy": 0, @@ -921,7 +917,6 @@ "ignore_xss_filter": 0, "in_filter": 0, "in_list_view": 0, - "in_standard_filter": 0, "label": "Taxes and Charges", "length": 0, "no_copy": 0, @@ -951,7 +946,6 @@ "ignore_xss_filter": 0, "in_filter": 0, "in_list_view": 0, - "in_standard_filter": 0, "length": 0, "no_copy": 0, "permlevel": 0, @@ -978,7 +972,6 @@ "ignore_xss_filter": 0, "in_filter": 0, "in_list_view": 0, - "in_standard_filter": 0, "label": "Income Account", "length": 0, "no_copy": 0, @@ -1009,7 +1002,6 @@ "ignore_xss_filter": 0, "in_filter": 0, "in_list_view": 0, - "in_standard_filter": 0, "label": "Expense Account", "length": 0, "no_copy": 0, @@ -1037,7 +1029,6 @@ "ignore_xss_filter": 0, "in_filter": 0, "in_list_view": 0, - "in_standard_filter": 0, "label": "Cost Center", "length": 0, "no_copy": 0, @@ -1067,8 +1058,8 @@ "issingle": 0, "istable": 0, "max_attachments": 0, - "modified": "2016-12-12 17:02:22.323006", - "modified_by": "Administrator", + "modified": "2016-12-28 15:14:59.411457", + "modified_by": "rohit@erpnext.com", "module": "Accounts", "name": "POS Profile", "owner": "Administrator", diff --git a/erpnext/accounts/doctype/sales_invoice/pos.py b/erpnext/accounts/doctype/sales_invoice/pos.py index 3619e989d8c..f5721e884d1 100644 --- a/erpnext/accounts/doctype/sales_invoice/pos.py +++ b/erpnext/accounts/doctype/sales_invoice/pos.py @@ -41,6 +41,7 @@ def get_pos_data(): 'pos_profile': pos_profile, 'meta': { 'invoice': frappe.get_meta('Sales Invoice'), + 'customer': frappe.get_meta('Customer'), 'items': frappe.get_meta('Sales Invoice Item'), 'taxes': frappe.get_meta('Sales Taxes and Charges') } diff --git a/erpnext/accounts/page/pos/pos.js b/erpnext/accounts/page/pos/pos.js index a4078bdca6c..55f66534b1c 100644 --- a/erpnext/accounts/page/pos/pos.js +++ b/erpnext/accounts/page/pos/pos.js @@ -325,6 +325,7 @@ erpnext.pos.PointOfSale = erpnext.taxes_and_totals.extend({ $.each(this.meta, function(i, data){ frappe.meta.sync(data) + locals["DocType"][data.name] = data; }) this.print_template_data = frappe.render_template("print_template", @@ -412,21 +413,26 @@ erpnext.pos.PointOfSale = erpnext.taxes_and_totals.extend({ autoFocus: true, source: function (request, response) { me.customer_data = me.get_customers(request.term) + me.add_customer(); + response($.map(me.customer_data, function(data){ - return {label: data.name, value: data.name, - customer_group: data.customer_group, territory: data.territory} + return {label: data.name, customer_name: data.name, customer_group: data.customer_group, + territory: data.territory, onclick: data.onclick} })) }, - change: function(event, ui){ - if(ui.item){ - me.frm.doc.customer = ui.item.label; - me.frm.doc.customer_name = ui.item.customer_name; - me.frm.doc.customer_group = ui.item.customer_group; - me.frm.doc.territory = ui.item.territory; - }else{ - me.frm.doc.customer = me.party_field.$input.val(); + select: function(event, ui){ + if(ui.item.onclick) { + ui.item.value = "" + ui.item.onclick(me); + }else if(ui.item) { + me.update_customer_data(ui.item) } me.refresh(); + }, + change: function(event, ui) { + if(!ui.item) { + me.frm.doc.customer = $(this).val(); + } } }).on("focus", function(){ setTimeout(function() { @@ -434,7 +440,43 @@ erpnext.pos.PointOfSale = erpnext.taxes_and_totals.extend({ me.party_field.$input.autocomplete( "search", " " ); } }, 500); - }); + }).autocomplete(this.party_field).data('ui-autocomplete')._renderItem = function(ul, d){ + var html = "" + __(d.label) + ""; + return $('
') + .data('item.autocomplete', d) + .html('' + html + '
') + .appendTo(ul); + } + }, + + add_customer: function() { + var me = this; + if(this.connection_status) { + this.customer_data.push({ + name: "" + + " " + + __("Create a new Customer") + + "", + onclick: me.new_customer + }); + } + }, + + new_customer: function(obj) { + var me = obj; + frappe.ui.form.quick_entry('Customer', function(doc){ + me.customers.push(doc) + me.party_field.$input.val(doc.name); + me.update_customer_data(doc) + }) + }, + + update_customer_data: function(doc) { + var me = this; + this.frm.doc.customer = doc.label || doc.name; + this.frm.doc.customer_name = doc.customer_name; + this.frm.doc.customer_group = doc.customer_group; + this.frm.doc.territory = doc.territory; }, get_customers: function(key){ @@ -593,7 +635,7 @@ erpnext.pos.PointOfSale = erpnext.taxes_and_totals.extend({ this.remove_item = [] $.each(this.frm.doc["items"] || [], function(i, d) { - if(d.serial_no){ + if(d.serial_no && field == 'qty'){ me.validate_serial_no_qty(d, item_code, field, value) } @@ -764,6 +806,7 @@ erpnext.pos.PointOfSale = erpnext.taxes_and_totals.extend({ actual_qty: me.actual_qty_dict[d.item_code] || 0, projected_qty: d.projected_qty, rate: format_number(d.rate, me.frm.doc.currency), + enabled: me.pos_profile_data["allow_user_to_edit_rate"] ? true: false, amount: format_currency(d.amount, me.frm.doc.currency) })).appendTo($items); }); diff --git a/erpnext/accounts/print_format/point_of_sale/point_of_sale.json b/erpnext/accounts/print_format/point_of_sale/point_of_sale.json index 773f7fc8e35..367ce07e281 100644 --- a/erpnext/accounts/print_format/point_of_sale/point_of_sale.json +++ b/erpnext/accounts/print_format/point_of_sale/point_of_sale.json @@ -1,4 +1,5 @@ { + "align_labels_left": 0, "creation": "2016-05-05 17:16:18.564460", "custom_format": 1, "disabled": 0, @@ -6,13 +7,16 @@ "docstatus": 0, "doctype": "Print Format", "font": "Default", - "html": "\n\n\n\t{{ company }}
\n\t{{ __(\"POS No : \") }}{{offline_pos_name}}
\n
\n\t{{ __(\"Date\") }}: {{ dateutil.global_date_format(posting_date) }}
\n
| {{ __(\"Item\") }} | \n\t\t\t{{ __(\"Qty\") }} | \n\t\t\t{{ __(\"Amount\") }} | \n\t\t
|---|---|---|
| \n\t\t\t\t{{ item.item_name }}\n\t\t\t | \n\t\t\t{{ format_number(item.qty, precision(\"difference\")) }} @ {{ format_currency(item.rate, currency) }} | \n\t\t\t{{ format_currency(item.amount, currency) }} | \n\t\t
| \n\t\t\t\t{{ __(\"Net Total\") }}\n\t\t\t | \n\t\t\t\n\t\t\t\t{{ format_currency(total, currency) }}\n\t\t\t | \n\t\t
| \n\t\t\t\t{{ row.description }}\n\t\t\t | \n\t\t\t\n\t\t\t\t{{ format_currency(row.tax_amount, currency) }}\n\t\t\t | \n\t\t
| \n\t\t\t\t{{ __(\"Discount\") }}\n\t\t\t | \n\t\t\t\n\t\t\t\t{{ format_currency(discount_amount, currency) }}\n\t\t\t | \n\t\t
| \n\t\t\t\t{{ __(\"Grand Total\") }}\n\t\t\t | \n\t\t\t\n\t\t\t\t{{ format_currency(grand_total, currency) }}\n\t\t\t | \n\t\t
{{ __(\"Thank you, please visit again.\") }}
", + "html": "\n\n\n\t{{ company }}
\n\t{{ __(\"POS No : \") }}{{offline_pos_name}}
\n
\n\t{{ __(\"Date\") }}: {{ dateutil.global_date_format(posting_date) }}
\n
| {{ __(\"Item\") }} | \n\t\t\t{{ __(\"Qty\") }} | \n\t\t\t{{ __(\"Amount\") }} | \n\t\t
|---|---|---|
| \n\t\t\t\t{{ item.item_name }}\n\t\t\t | \n\t\t\t{{ format_number(item.qty, precision(\"difference\")) }} @ {{ format_currency(item.rate, currency) }} | \n\t\t\t{{ format_currency(item.amount, currency) }} | \n\t\t
| \n\t\t\t\t{{ __(\"Net Total\") }}\n\t\t\t | \n\t\t\t\n\t\t\t\t{{ format_currency(total, currency) }}\n\t\t\t | \n\t\t
| \n\t\t\t\t{{ row.description }}\n\t\t\t | \n\t\t\t\n\t\t\t\t{{ format_currency(row.tax_amount, currency) }}\n\t\t\t | \n\t\t
| \n\t\t\t\t{{ __(\"Discount\") }}\n\t\t\t | \n\t\t\t\n\t\t\t\t{{ format_currency(discount_amount, currency) }}\n\t\t\t | \n\t\t
| \n\t\t\t\t{{ __(\"Grand Total\") }}\n\t\t\t | \n\t\t\t\n\t\t\t\t{{ format_currency(grand_total, currency) }}\n\t\t\t | \n\t\t
| \n\t\t\t\t{{ __(\"Paid Amount\") }}\n\t\t\t | \n\t\t\t\n\t\t\t\t{{ format_currency(paid_amount, currency) }}\n\t\t\t | \n\t\t
{{ __(\"Thank you, please visit again.\") }}
", "idx": 0, - "modified": "2016-09-05 08:28:42.308782", + "line_breaks": 0, + "modified": "2016-12-27 17:22:17.391673", "modified_by": "Administrator", + "module": "Accounts", "name": "Point of Sale", "owner": "Administrator", "print_format_builder": 0, "print_format_type": "Js", + "show_section_headings": 0, "standard": "Yes" } \ No newline at end of file diff --git a/erpnext/public/js/pos/pos_bill_item.html b/erpnext/public/js/pos/pos_bill_item.html index a6ef2d636a4..d8833bb8359 100644 --- a/erpnext/public/js/pos/pos_bill_item.html +++ b/erpnext/public/js/pos/pos_bill_item.html @@ -17,7 +17,13 @@