[Enhancement] POS, numeric keypad
diff --git a/erpnext/accounts/page/pos/pos.js b/erpnext/accounts/page/pos/pos.js
index ed54ab4..961b2a1 100644
--- a/erpnext/accounts/page/pos/pos.js
+++ b/erpnext/accounts/page/pos/pos.js
@@ -374,6 +374,7 @@
this.add_customer_btn = this.wrapper.find('.add-customer-btn');
this.pos_bill = this.wrapper.find('.pos-bill').hide();
this.list_customers = this.wrapper.find('.list-customers');
+ this.numeric_keypad = this.wrapper.find('.numeric_keypad');
this.list_customers_btn.on('click', function () {
$(this).toggleClass("view_customer");
@@ -383,12 +384,16 @@
me.party_field.$input.attr('disabled', true);
me.list_customers.show();
me.pos_bill.hide();
+ me.numeric_keypad.hide();
} else {
if(me.frm.doc.docstatus == 0) {
me.party_field.$input.attr('disabled', false);
}
me.pos_bill.show();
me.list_customers.hide()
+ if(me.frm.doc.items.length > 0) {
+ me.numeric_keypad.show();
+ }
}
});
this.add_customer_btn.on('click', function() {
@@ -662,6 +667,7 @@
this.frm.doc.customer_group = doc.customer_group;
this.frm.doc.territory = doc.territory;
this.pos_bill.show();
+ this.numeric_keypad.show();
},
get_customers: function (key) {
@@ -835,12 +841,29 @@
update_rate: function () {
var me = this;
+
+ $(this.wrapper).find(".pos-bill-item").click(function() {
+ var item_code = $(this).attr("data-item-code");
+ doc = me.get_child_item(item_code);
+ html_data = frappe.render_template("pos_selected_item", doc[0])
+ $(me.wrapper).find('.selected-item').html(html_data)
+ me.bind_qty_event()
+ })
$(this.wrapper).find(".pos-item-rate").on("change", function () {
var item_code = $(this).parents(".pos-bill-item").attr("data-item-code");
me.set_item_details(item_code, "rate", $(this).val());
})
},
+
+ get_child_item: function(item_code) {
+ var me = this;
+ return $.map(me.frm.doc.items, function(doc){
+ if(doc.item_code == item_code) {
+ return doc
+ }
+ })
+ },
set_item_details: function (item_code, field, value) {
var me = this;
@@ -950,6 +973,7 @@
this.add_new_item_to_grid();
this.update_paid_amount_status(false)
+ this.wrapper.find(".item-cart").scrollTop(1000);
},
add_new_item_to_grid: function () {
@@ -959,6 +983,7 @@
this.child.item_name = this.items[0].item_name;
this.child.stock_uom = this.items[0].stock_uom;
this.child.description = this.items[0].description;
+ this.child.discount_percentage = 0.0;
this.child.qty = 1;
this.child.item_group = this.items[0].item_group;
this.child.cost_center = this.pos_profile_data['cost_center'] || this.items[0].cost_center;
diff --git a/erpnext/public/build.json b/erpnext/public/build.json
index c405681..858514e 100644
--- a/erpnext/public/build.json
+++ b/erpnext/public/build.json
@@ -20,6 +20,7 @@
"public/js/controllers/transaction.js",
"public/js/pos/pos.html",
"public/js/pos/pos_bill_item.html",
+ "public/js/pos/pos_selected_item.html",
"public/js/pos/pos_item.html",
"public/js/pos/pos_tax_row.html",
"public/js/pos/pos_invoice_list.html",
diff --git a/erpnext/public/css/erpnext.css b/erpnext/public/css/erpnext.css
index cfe9f63..b1f1985 100644
--- a/erpnext/public/css/erpnext.css
+++ b/erpnext/public/css/erpnext.css
@@ -59,7 +59,8 @@
padding: 10px 0px;
border-bottom: 1px solid #d1d8dd;
}
-.item-list-area {
+.item-list-area,
+.list-customers {
padding: 15px 0px;
overflow-y: scroll;
height: calc(100vh - 162px);
@@ -82,6 +83,19 @@
margin-left: -15px;
margin-right: -15px;
}
+.item-cart {
+ overflow-y: scroll;
+ height: calc(100vh - 60vh);
+}
+.edit-pos-item {
+ height: 40px;
+ font-size: 14px;
+ border-top: 1px solid #d1d8dd;
+}
+.pos-bill-item:hover {
+ background-color: #f5f7fa;
+ cursor: pointer;
+}
.pos-bill-row {
margin: 0px;
padding: 7px 0px;
@@ -157,13 +171,20 @@
.pos-keyboard-key,
.delete-btn {
border: 1px solid #d1d8dd;
- height: 85px;
- width: 85px;
- margin: 10px 10px;
- font-size: 24px;
+ height: 69px;
+ width: 69px;
+ font-size: 20px;
font-weight: 200;
background-color: #FDFDFD;
border-color: #e8e8e8;
+ margin-left: -4px;
+}
+.pos-pay {
+ height: 69px;
+ width: 69px;
+ font-size: 17px;
+ font-weight: 200;
+ margin-left: -4px;
}
.multimode-payments {
padding-left: 30px;
diff --git a/erpnext/public/js/pos/pos.html b/erpnext/public/js/pos/pos.html
index 44e42d7..c634135 100644
--- a/erpnext/public/js/pos/pos.html
+++ b/erpnext/public/js/pos/pos.html
@@ -17,12 +17,12 @@
</div>
<div class="pos-bill">
<div class="item-cart">
- <div class="row pos-bill-row pos-bill-header">
+ <!-- <div class="row pos-bill-row pos-bill-header">
<div class="col-xs-4"><h6>{%= __("Item") %}</h6></div>
<div class="col-xs-3"><h6 class="text-right">{%= __("Quantity") %}</h6></div>
<div class="col-xs-2"><h6 class="text-right">{%= __("Discount") %}</h6></div>
<div class="col-xs-3"><h6 class="text-right">{%= __("Rate") %}</h6></div>
- </div>
+ </div> -->
<div class="items"></div>
</div>
<div class="totals-area">
@@ -54,15 +54,38 @@
</div>
</div>
{% } %}
- <div class="row pos-bill-row grand-total-area">
+ <div class="row pos-bill-row grand-total-area" style="border-bottom:1px solid #d1d8dd;">
<div class="col-xs-6"><h6>{%= __("Grand Total") %}</h6></div>
<div class="col-xs-6"><h6 class="grand-total text-right"></h6></div>
</div>
</div>
</div>
- <div class="list-customers">
+
+ <div class="list-customers" style = "display:none">
</div>
+ <div class="row">
+ <div class="col-xs-5 selected-item">
+
+ </div>
+ <div class="col-xs-7 numeric_keypad" style="display:none">
+ {% var chartData = ["Qty", "Disc", "Price"] %}
+ {% for(var i=0; i<3; i++) { %}
+ <div class="row text-right">
+ {% for(var j=i*3; j<(i+1)*3; j++) { %}
+ <button type="button" class="btn btn-default pos-keyboard-key">{{j+1}}</button>
+ {% } %}
+ <button type="button" class="btn text-center btn-default pos-keyboard-key">{{ chartData[i] }}</button>
+ </div>
+ {% } %}
+ <div class="row text-right">
+ <button type="button" class="btn btn-default delete-btn">Del</button>
+ <button type="button" class="btn btn-default pos-keyboard-key">0</button>
+ <button type="button" class="btn btn-default pos-keyboard-key">.</button>
+ <button type="button" class="btn btn-primary pos-pay">Pay</button>
+ </div>
+ </div>
+ </div>
</div>
<div class="col-sm-6 pos-items-section">
<div class="row pos-item-area">
@@ -77,10 +100,10 @@
<div class="app-listing item-list"></ul>
</div>
</div>
- <div class="row">
+ <!-- <div class="row">
<div class="text-right list-paging-area">
<button class="btn btn-default btn-more btn-sm" style="margin:5px 20px">{{ __("More") }}</button>
</div>
- </div>
+ </div> -->
</div>
</div>
diff --git a/erpnext/public/js/pos/pos_selected_item.html b/erpnext/public/js/pos/pos_selected_item.html
new file mode 100644
index 0000000..491938e
--- /dev/null
+++ b/erpnext/public/js/pos/pos_selected_item.html
@@ -0,0 +1,27 @@
+<h5 style="margin-top:5px">Item <span class="text-primary no-margin font-montserrat">{%= item_name %}</h5>
+<div class="pos-bill-item" data-item-code="{%= item_code %}">
+ <div class="form-group edit-pos-item">
+ <label class=" text-left col-xs-4">Price:</label>
+ <div class="col-xs-8">
+ <input class="form-control text-right" value="{%= rate %}">
+ </div>
+ </div>
+ <div class="form-group edit-pos-item">
+ <label class=" text-left col-xs-4">Qty:</label>
+ <div class="col-xs-8">
+ <input class="form-control text-right pos-item-qty" value="{%= qty %}">
+ </div>
+ </div>
+ <div class="form-group edit-pos-item">
+ <label class=" text-left col-xs-4">Discount:</label>
+ <div class="col-xs-8">
+ <input class="form-control text-right" value="{%= discount_percentage %}">
+ </div>
+ </div>
+ <div class="form-group edit-pos-item">
+ <label class=" text-left col-xs-4">Amount:</label>
+ <div class="col-xs-8">
+ <input class="form-control text-right " value="{%= amount %}">
+ </div>
+ </div>
+</div>
\ No newline at end of file
diff --git a/erpnext/public/less/erpnext.less b/erpnext/public/less/erpnext.less
index 495e618..34ea901 100644
--- a/erpnext/public/less/erpnext.less
+++ b/erpnext/public/less/erpnext.less
@@ -74,7 +74,7 @@
border-bottom: 1px solid #d1d8dd;
}
-.item-list-area {
+.item-list-area, .list-customers {
padding: 15px 0px;
overflow-y: scroll;
height: ~"calc(100vh - 162px)";
@@ -102,6 +102,22 @@
margin-right: -15px;
}
+.item-cart {
+ overflow-y: scroll;
+ height: ~"calc(100vh - 60vh)";
+}
+
+.edit-pos-item {
+ height: 40px;
+ font-size: 14px;
+ border-top: 1px solid @border-color;
+}
+
+.pos-bill-item:hover {
+ background-color: #f5f7fa;
+ cursor: pointer;
+}
+
.pos-bill-row {
margin: 0px;
padding: 7px 0px;
@@ -197,13 +213,21 @@
.pos-keyboard-key, .delete-btn {
border: 1px solid #d1d8dd;
- height:85px;
- width:85px;
- margin:10px 10px;
- font-size:24px;
+ height:69px;
+ width:69px;
+ font-size:20px;
font-weight:200;
background-color: #FDFDFD;
border-color: #e8e8e8;
+ margin-left:-4px;
+}
+
+.pos-pay {
+ height:69px;
+ width:69px;
+ font-size:17px;
+ font-weight:200;
+ margin-left:-4px;
}
.multimode-payments {